diff --git a/src/coupledtimestepper.cc b/src/coupledtimestepper.cc
index 17432aa14e5410baefa744b15b5f4ced29c35873..f76b47e18d000daa07303966102d3c2cae352a8f 100644
--- a/src/coupledtimestepper.cc
+++ b/src/coupledtimestepper.cc
@@ -2,8 +2,6 @@
 #include "config.h"
 #endif
 
-#include <dune/solvers/norms/energynorm.hh>
-
 #include "coupledtimestepper.hh"
 #include "fixedpointiterator.hh"
 
@@ -40,13 +38,11 @@ int CoupledTimeStepper<Factory, StateUpdater, VelocityUpdater>::step(
   stateUpdater_->setup(tau);
   velocityUpdater_->setup(ell, tau, newRelativeTime, velocityRHS,
                           velocityIterate, velocityMatrix);
-  EnergyNorm<Matrix, Vector> const velocityMatrixNorm(velocityMatrix);
-
   FixedPointIterator<Factory, StateUpdater, VelocityUpdater> fixedPointIterator(
       factory_, parset_, globalFriction_);
   auto const iterations =
       fixedPointIterator.run(stateUpdater_, velocityUpdater_, velocityMatrix,
-                             velocityMatrixNorm, velocityRHS, velocityIterate);
+                             velocityRHS, velocityIterate);
   return iterations;
 }
 
diff --git a/src/fixedpointiterator.cc b/src/fixedpointiterator.cc
index 517db55bd67c00fbc73ed874d2e09009c04562a3..d868eee0a7705deac417e45c1c0060d55a094f8b 100644
--- a/src/fixedpointiterator.cc
+++ b/src/fixedpointiterator.cc
@@ -5,6 +5,7 @@
 #include <dune/common/exceptions.hh>
 
 #include <dune/solvers/common/arithmetic.hh>
+#include <dune/solvers/norms/energynorm.hh>
 #include <dune/solvers/solvers/loopsolver.hh>
 
 #include "enums.hh"
@@ -30,14 +31,14 @@ template <class Factory, class StateUpdater, class VelocityUpdater>
 int FixedPointIterator<Factory, StateUpdater, VelocityUpdater>::run(
     std::shared_ptr<StateUpdater> stateUpdater,
     std::shared_ptr<VelocityUpdater> velocityUpdater,
-    Matrix const &velocityMatrix, Norm<Vector> const &velocityMatrixNorm,
-    Vector const &velocityRHS, Vector &velocityIterate) {
+    Matrix const &velocityMatrix, Vector const &velocityRHS,
+    Vector &velocityIterate) {
   auto multigridStep = factory_.getSolver();
 
+  EnergyNorm<Matrix, Vector> energyNorm(velocityMatrix);
   LoopSolver<Vector> velocityProblemSolver(
-      multigridStep, velocityMaxIterations_, velocityTolerance_,
-      &velocityMatrixNorm, verbosity_, false); // absolute error
-
+      multigridStep, velocityMaxIterations_, velocityTolerance_, &energyNorm,
+      verbosity_, false); // absolute error
   Vector previousVelocityIterate = velocityIterate;
 
   size_t fixedPointIteration;
@@ -62,7 +63,7 @@ int FixedPointIterator<Factory, StateUpdater, VelocityUpdater>::run(
     velocityProblemSolver.preprocess();
     velocityProblemSolver.solve();
 
-    if (velocityMatrixNorm.diff(previousVelocityIterate, velocityIterate) <
+    if (energyNorm.diff(previousVelocityIterate, velocityIterate) <
         fixedPointTolerance_) {
       fixedPointIteration++;
       break;
diff --git a/src/fixedpointiterator.hh b/src/fixedpointiterator.hh
index 70a03c97f003e1607b52e154f8e036d2b1ad8007..16b3eec5c3c58518e157ab13ace74c35131df917 100644
--- a/src/fixedpointiterator.hh
+++ b/src/fixedpointiterator.hh
@@ -23,8 +23,8 @@ class FixedPointIterator {
 
   int run(std::shared_ptr<StateUpdater> stateUpdater,
           std::shared_ptr<VelocityUpdater> velocityUpdater,
-          Matrix const &velocityMatrix, Norm<Vector> const &velocityMatrixNorm,
-          Vector const &velocityRHS, Vector &velocityIterate);
+          Matrix const &velocityMatrix, Vector const &velocityRHS,
+          Vector &velocityIterate);
 
 private:
   Factory &factory_;