diff --git a/test/localgeodesicfefunctiontest.cc b/test/localgeodesicfefunctiontest.cc
index 1439e86b11e1c13ca7268ff6b0fbce71b300548c..4b3e35339e8bd9482102a2a3f5735f1d9fc78645 100644
--- a/test/localgeodesicfefunctiontest.cc
+++ b/test/localgeodesicfefunctiontest.cc
@@ -11,58 +11,12 @@
 #include <dune/gfe/unitvector.hh>
 
 #include <dune/gfe/localgeodesicfefunction.hh>
+#include "multiindex.hh"
 
 const double eps = 1e-6;
 
 using namespace Dune;
 
-/** \brief N-dimensional multi-index
-*/
-template <int N>
-class MultiIndex
-    : public array<unsigned int,N>
-{
-
-    // The range of each component
-    unsigned int limit_;
-
-public:
-    /** \brief Constructor with a given range for each digit */
-    MultiIndex(unsigned int limit)
-        : limit_(limit)
-    {
-        std::fill(this->begin(), this->end(), 0);
-    }
-
-    /** \brief Increment the MultiIndex */
-    MultiIndex& operator++() {
-
-        for (int i=0; i<N; i++) {
-
-            // Augment digit
-            (*this)[i]++;
-
-            // If there is no carry-over we can stop here
-            if ((*this)[i]<limit_)
-                break;
-
-            (*this)[i] = 0;
-                    
-        }
-        return *this;
-    }
-
-    /** \brief Compute how many times you can call operator++ before getting to (0,...,0) again */
-    size_t cycle() const {
-        size_t result = 1;
-        for (int i=0; i<N; i++)
-            result *= limit_;
-        return result;
-    }
-
-};
-
-
 template <int domainDim>
 void testDerivativeTangentiality(const RealTuple<1>& x,
                                  const FieldMatrix<double,1,domainDim>& derivative)
diff --git a/test/multiindex.hh b/test/multiindex.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c088c8f3bb14da8164448ba1a0f8ee2d586ae45a
--- /dev/null
+++ b/test/multiindex.hh
@@ -0,0 +1,52 @@
+#ifndef MULTI_INDEX_HH
+#define MULTI_INDEX_HH
+
+#include <dune/common/array.hh>
+
+/** \brief N-dimensional multi-index
+*/
+template <int N>
+class MultiIndex
+    : public Dune::array<unsigned int,N>
+{
+
+    // The range of each component
+    unsigned int limit_;
+
+public:
+    /** \brief Constructor with a given range for each digit */
+    MultiIndex(unsigned int limit)
+        : limit_(limit)
+    {
+        std::fill(this->begin(), this->end(), 0);
+    }
+
+    /** \brief Increment the MultiIndex */
+    MultiIndex& operator++() {
+
+        for (int i=0; i<N; i++) {
+
+            // Augment digit
+            (*this)[i]++;
+
+            // If there is no carry-over we can stop here
+            if ((*this)[i]<limit_)
+                break;
+
+            (*this)[i] = 0;
+                    
+        }
+        return *this;
+    }
+
+    /** \brief Compute how many times you can call operator++ before getting to (0,...,0) again */
+    size_t cycle() const {
+        size_t result = 1;
+        for (int i=0; i<N; i++)
+            result *= limit_;
+        return result;
+    }
+
+};
+
+#endif
\ No newline at end of file