diff --git a/linelast.cc b/linelast.cc
index f032aee015b63c88a92e7554881801eb904d8ba6..7662e066ffaf78d46118898d05dffad597b4601e 100644
--- a/linelast.cc
+++ b/linelast.cc
@@ -11,6 +11,7 @@
 #include <dune/istl/io.hh>
 
 #include <dune/fufem/functiontools/gridfunctionadaptor.hh>
+#include <dune/fufem/functions/coarsegridfunctionwrapper.hh>
 #include <dune/fufem/functionspacebases/p1nodalbasis.hh>
 #include <dune/fufem/functionspacebases/p2nodalbasis.hh>
 #include <dune/fufem/assemblers/operatorassembler.hh>
@@ -111,6 +112,8 @@ int main (int argc, char *argv[]) try
     AmiraMeshReader<GridType>::readFunction(coarseNeumannValues, path + neumannFile);
     P1NodalBasis<GridType::LevelGridView> coarseBasis(grid->levelGridView(0));
 
+    auto coarseDir = Functions::makeFunction(coarseBasis,coarseDirichletValues);
+    auto coarseNeumann = Functions::makeFunction(coarseBasis,coarseNeumannValues);
 
     for (int i=0; i<minLevel; i++)
         grid->globalRefine(1);
@@ -142,9 +145,12 @@ int main (int argc, char *argv[]) try
                     dirichletNodes[i][j]=true;
 
         VectorType dirichletValues, neumannValues;
-        Functions::interpolate(p1NodalBasis, dirichletValues, Functions::makeFunction(coarseBasis,coarseDirichletValues));
 
-        Functions::interpolate(p1NodalBasis, neumannValues, Functions::makeFunction(coarseBasis,coarseNeumannValues));
+        CoarseGridFunctionWrapper<BasisGridFunction<P1NodalBasis<GridType::LevelGridView>, VectorType> > wrappedDir(coarseDir);
+        Functions::interpolate(p1NodalBasis, dirichletValues, wrappedDir);
+
+        CoarseGridFunctionWrapper<BasisGridFunction<P1NodalBasis<GridType::LevelGridView>, VectorType> > wrappedNeu(coarseNeumann);
+        Functions::interpolate(p1NodalBasis, neumannValues, wrappedNeu);
 
         VectorType rhs(grid->size(dim));
         rhs = 0;