diff --git a/cosserat-continuum.cc b/cosserat-continuum.cc
index c25cefeb24025844442e7be3e19c1fb7551e41e5..1d08d09c2506074cf0c0e701feb2572375935102 100644
--- a/cosserat-continuum.cc
+++ b/cosserat-continuum.cc
@@ -22,6 +22,7 @@
 #include <dune/grid/io/file/gmshreader.hh>
 
 #include <dune/fufem/boundarypatch.hh>
+#include <dune/fufem/functionspacebases/p1nodalbasis.hh>
 
 #include <dune/solvers/solvers/iterativesolver.hh>
 #include <dune/solvers/norms/energynorm.hh>
@@ -163,14 +164,17 @@ int main (int argc, char *argv[]) try
 
     grid->globalRefine(numLevels-1);
 
-    SolutionType x(grid->size(dim));
+    typedef P1NodalBasis<GridType::LeafGridView,double> FEBasis;
+    FEBasis feBasis(grid->leafGridView());
+
+    SolutionType x(feBasis.size());
 
     // /////////////////////////////////////////
     //   Read Dirichlet values
     // /////////////////////////////////////////
 
-    BitSetVector<blocksize> dirichletNodes(grid->size(dim), false);
-    BitSetVector<1> neumannNodes(grid->size(dim), false);
+    BitSetVector<blocksize> dirichletNodes(feBasis.size(), false);
+    BitSetVector<1> neumannNodes(feBasis.size(), false);
 
     GridType::Codim<dim>::LeafIterator vIt    = grid->leafbegin<dim>();
     GridType::Codim<dim>::LeafIterator vEndIt = grid->leafend<dim>();
@@ -215,9 +219,6 @@ int main (int argc, char *argv[]) try
     //   Assemble Neumann term
     //////////////////////////////////////////////////////////////////////////////
 
-    typedef P1NodalBasis<GridType::LeafGridView,double> P1Basis;
-    P1Basis p1Basis(grid->leafGridView());
-
     BoundaryPatch<GridType::LeafGridView> neumannBoundary(grid->leafGridView(), neumannNodes);
 
     std::cout << "Neumann boundary has " << neumannBoundary.numFaces() << " faces\n";
@@ -279,15 +280,15 @@ int main (int argc, char *argv[]) try
 #else
     // Assembler using ADOL-C
     CosseratEnergyLocalStiffness<GridType::LeafGridView,
-                                 P1Basis::LocalFiniteElement,
+                                 FEBasis::LocalFiniteElement,
                                  3,adouble> cosseratEnergyADOLCLocalStiffness(materialParameters,
                                                                               &neumannBoundary,
                                                                               neumannFunction.get());
     LocalGeodesicFEADOLCStiffness<GridType::LeafGridView,
-                                  P1Basis::LocalFiniteElement,
+                                  FEBasis::LocalFiniteElement,
                                   TargetSpace> localGFEADOLCStiffness(&cosseratEnergyADOLCLocalStiffness);
 
-    GeodesicFEAssembler<P1Basis,TargetSpace> assembler(grid->leafGridView(),
+    GeodesicFEAssembler<FEBasis,TargetSpace> assembler(grid->leafGridView(),
                                                             &localGFEADOLCStiffness);
 #endif
     // /////////////////////////////////////////////////