diff --git a/src/samplefunctional.hh b/src/samplefunctional.hh
index f4b9509180d87ff20ff0b9ffe4887dfc634f036f..0a1dc654abee63e58c9b361e3306b00801cd91d1 100644
--- a/src/samplefunctional.hh
+++ b/src/samplefunctional.hh
@@ -119,7 +119,16 @@ template <int dimension> class SampleFunctional {
 
 template <class Functional>
 void minimise(const Functional J, const typename Functional::SmallVector x,
-              typename Functional::SmallVector &corr) {
+              typename Functional::SmallVector &corr,
+              Bisection const &bisection =
+                  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
+{
   typedef typename Functional::SmallVector SmallVector;
   SmallVector descDir;
   J.descentDirection(x, descDir);
@@ -165,12 +174,6 @@ void minimise(const Functional J, const typename Functional::SmallVector x,
            0); // We should not be minimising in this direction otherwise
   }
 
-  Bisection 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
   int count;
   // FIXME: The value of x_old should not matter if the factor is 1.0, correct?
   double const stepsize = bisection.minimize(JRest, 0.0, 1.0, count);