diff --git a/dumux/implicit/localresidual.hh b/dumux/implicit/localresidual.hh
index 2dbfb1b1c083c7cb49c27d0084eaf9bf1dde5fca..26882fb074b91e5f051f32f45570160819a8208b 100644
--- a/dumux/implicit/localresidual.hh
+++ b/dumux/implicit/localresidual.hh
@@ -276,13 +276,13 @@ protected:
 
         // calculate the amount of conservation each quantity inside
         // all sub control volumes
-        for (int scvIdx = 0; scvIdx < fvGeometry_().numScv; scvIdx++) {
-            Valgrind::SetUndefined(storageTerm_[scvIdx]);
-            asImp_().computeStorage(storageTerm_[scvIdx], scvIdx, /*isOldSol=*/false);
-            storageTerm_[scvIdx] *=
-                fvGeometry_().subContVol[scvIdx].volume
-                * curVolVars_(scvIdx).extrusionFactor();
-            Valgrind::CheckDefined(storageTerm_[scvIdx]);
+        for (auto&& scv : fvGeometry_().scvs())
+        {
+            int scvIdx = scv.indexInElement();
+
+            storageTerm_[scvIdx] = asImp_().computeStorage(scv, /*isOldSol=*/false);
+            storageTerm_[scvIdx] *= scv.volume();
+            storageTerm_[scvIdx] *= problem_().model().curVolVars(scv).extrusionFactor();
         }
     }