diff --git a/src/bisection-example-new.cc b/src/bisection-example-new.cc
index b9f09477c23b7a998cceb6d4c4f4981b0f7f82a9..606fde011a6792f450aa65fecca14682df9d4ba3 100644
--- a/src/bisection-example-new.cc
+++ b/src/bisection-example-new.cc
@@ -94,15 +94,15 @@ class SampleFunctional {
   }
 };
 
-// TODO: take a reference to a correction
-
 template <class Functional>
-typename Functional::SmallVector minimise(
-    const Functional J, const typename Functional::SmallVector x) {
+void minimise(const Functional J, const typename Functional::SmallVector x,
+              typename Functional::SmallVector &corr) {
   typename Functional::SmallVector descDir = J.descentDirection(x);
 
-  if (descDir == typename Functional::SmallVector(0.0))
-    return typename Functional::SmallVector(0.0);
+  if (descDir == typename Functional::SmallVector(0.0)) {
+    corr = typename Functional::SmallVector(0.0);
+    return;
+  }
 
   // {{{ Construct a restriction of J to the line x + t * descDir
 
@@ -137,9 +137,8 @@ typename Functional::SmallVector minimise(
               << std::endl;
   ;
 
-  typename Functional::SmallVector middle = descDir;
-  middle *= m;
-  return middle;
+  corr = descDir;
+  corr *= m;
 }
 
 template <int dim, class Function>
@@ -149,7 +148,7 @@ void functionTester(
   typename SampleFunctional<dim, Function>::SmallVector correction;
   std::cout << "Old value: J(...) = " << J(start) << std::endl;
   for (size_t i = 1; i <= runs; ++i) {
-    correction = minimise(J, start);
+    minimise(J, start, correction);
     start += correction;
     if (i != runs)
       std::cout << "New value: J(...) = " << J(start) << std::endl;