diff --git a/src/test-gradient-method-helper.hh b/src/test-gradient-method-helper.hh
new file mode 100644
index 0000000000000000000000000000000000000000..45e7708b0d53242b74ae5fe3444e0dd03283c282
--- /dev/null
+++ b/src/test-gradient-method-helper.hh
@@ -0,0 +1,23 @@
+#include <boost/format.hpp>
+
+#include <dune/tnnmg/problem-classes/bisection.hh>
+
+#include <dune/tectonic/samplefunctional.hh>
+
+template <int dim>
+double functionTester(Dune::SampleFunctional<dim> J,
+                      typename Dune::SampleFunctional<dim>::SmallVector &start,
+                      size_t runs) {
+  Bisection const bisection(
+      0.0,   // acceptError: Stop if the search interval has
+             //              become smaller than this number
+      1.0,   // acceptFactor: ?
+      1e-12, // requiredResidual: ?
+      true,  // fastQuadratic
+      0);    // safety: acceptance factor for inexact minimization
+  double const original = J(start);
+  Dune::minimise(J, start, runs, bisection);
+  double const final = J(start);
+  std::cout << boost::format("%8g -> %e") % original % final << std::endl;
+  return final;
+}
diff --git a/src/test-gradient-method.cc b/src/test-gradient-method.cc
index 18152d119d094bcd22dbc7079ed564db3b0cf311..3348aea7a0acab5afdc3e4cad834e717fad9de08 100644
--- a/src/test-gradient-method.cc
+++ b/src/test-gradient-method.cc
@@ -4,33 +4,13 @@
 
 #include <cassert>
 
-#include <boost/format.hpp>
-
 #include <dune/common/exceptions.hh>
 #include <dune/common/shared_ptr.hh>
 
-#include <dune/tnnmg/problem-classes/bisection.hh>
-
 #include <dune/tectonic/samplefunctional.hh>
-#include "test-gradient-method-nicefunction.hh"
 
-template <int dim>
-double functionTester(Dune::SampleFunctional<dim> J,
-                      typename Dune::SampleFunctional<dim>::SmallVector &start,
-                      size_t runs) {
-  Bisection const bisection(
-      0.0,   // acceptError: Stop if the search interval has
-             //              become smaller than this number
-      1.0,   // acceptFactor: ?
-      1e-12, // requiredResidual: ?
-      true,  // fastQuadratic
-      0);    // safety: acceptance factor for inexact minimization
-  double const original = J(start);
-  Dune::minimise(J, start, runs, bisection);
-  double const final = J(start);
-  std::cout << boost::format("%8g -> %e") % original % final << std::endl;
-  return final;
-}
+#include "test-gradient-method-nicefunction.hh"
+#include "test-gradient-method-helper.hh"
 
 void testIdentity() {
   int const dim = 2;