diff --git a/src/duneevaluate.cc b/src/duneevaluate.cc
index c558374966995142e877bd2304f7bf332fda6e2d..fd6159fffaa6995a1a4d21d3d89c7156546b008c 100644
--- a/src/duneevaluate.cc
+++ b/src/duneevaluate.cc
@@ -7,6 +7,7 @@
 #endif
 
 #include "samplefunctional.hh"
+#include "duneoctave.hh"
 
 #include <cassert>
 
@@ -28,12 +29,10 @@ DEFUN_DLD(duneevaluate, args, nargout, "the help string") {
   b[0] = 1;
   b[1] = 2;
 
-  SampleFunctional::SmallVector our_point;
-  our_point[0] = point(0);
-  our_point[1] = point(1);
-
   Dune::SampleFunction f;
   SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f));
 
+  SampleFunctional::SmallVector our_point;
+  Dune::octaveToDune<dim>(point, our_point);
   return octave_value(J(our_point));
 }
diff --git a/src/duneevaluate.mk b/src/duneevaluate.mk
index 9dcc57246127e59324eb4a3a13f539ec051395ed..46ec6bed022c0770ca7a1472d4c6764a27d734f3 100644
--- a/src/duneevaluate.mk
+++ b/src/duneevaluate.mk
@@ -6,5 +6,5 @@ bin_PROGRAMS += duneminimise.oct
 duneevaluate.oct: duneevaluate.o
 	$(MKOCTFILE) -o $@ $< -ldunecommon
 
-duneevaluate.o: duneevaluate.cc
+duneevaluate.o: duneevaluate.cc duneoctave.hh
 	$(MKOCTFILE) $(DEFS) $(AM_CPPFLAGS) -c -o $@ $<
diff --git a/src/duneminimise.cc b/src/duneminimise.cc
index 773f4e4b4b8d3b853c64d20e92e5178776e269f1..e2ee46230e4d7cebe60c2ca59d4bdca97a74ff74 100644
--- a/src/duneminimise.cc
+++ b/src/duneminimise.cc
@@ -7,6 +7,7 @@
 #endif
 
 #include "samplefunctional.hh"
+#include "duneoctave.hh"
 
 #include <cassert>
 
@@ -32,18 +33,14 @@ DEFUN_DLD(duneminimise, args, nargout, "the help string") {
   SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f));
 
   SampleFunctional::SmallVector start;
-  start[0] = current(0);
-  start[1] = current(1);
-
-  /// END OF SETUP
+  Dune::octaveToDune<dim>(current, start);
 
   SampleFunctional::SmallVector correction;
   Dune::minimise(J, start, correction);
   start += correction;
 
   ColumnVector foo(dim);
-  foo(0) = start[0];
-  foo(1) = start[1];
+  Dune::duneToOctave<dim>(start, foo);
 
   return octave_value(foo);
 }
diff --git a/src/duneminimise.mk b/src/duneminimise.mk
index 63616381abf2c913c0e1c41795b90e3e49e4d756..41a7440c2ed1127bff982f7a873e8b26669e0f5e 100644
--- a/src/duneminimise.mk
+++ b/src/duneminimise.mk
@@ -6,5 +6,5 @@ bin_PROGRAMS += duneminimise.oct
 duneminimise.oct: duneminimise.o
 	$(MKOCTFILE) -o $@ $< -ldunecommon
 
-duneminimise.o: duneminimise.cc
+duneminimise.o: duneminimise.cc duneoctave.hh
 	$(MKOCTFILE) $(DEFS) $(AM_CPPFLAGS) -c -o $@ $<
diff --git a/src/duneoctave.hh b/src/duneoctave.hh
new file mode 100644
index 0000000000000000000000000000000000000000..b25c01b6eeef76922c58b5274cce83ba9f84a82e
--- /dev/null
+++ b/src/duneoctave.hh
@@ -0,0 +1,28 @@
+/* -*- mode:c++; mode:semantic -*- */
+
+#ifndef DUNE_OCTAVE_HH
+#define DUNE_OCTAVE_HH
+
+#include "samplefunctional.hh"
+
+#include <cassert>
+
+namespace Dune {
+template <int dimension>
+void octaveToDune(ColumnVector const &from,
+                  typename Dune::SampleFunctional<dimension>::SmallVector &to) {
+  assert(from.length() == dimension);
+  for (size_t i = 0; i < dimension; ++i)
+    to[i] = from(i);
+}
+
+template <int dimension>
+void duneToOctave(
+    typename Dune::SampleFunctional<dimension>::SmallVector const &from,
+    ColumnVector &to) {
+  assert(to.length() == dimension);
+  for (size_t i = 0; i < dimension; ++i)
+    to(i) = from[i];
+}
+}
+#endif