diff --git a/src/rodassembler.hh b/src/rodassembler.hh
index 69425981d7611ba608ceb09b9c5b42a7cb5f2f03..839f89e7142505e6d735cf15bfc287592a1f665b 100644
--- a/src/rodassembler.hh
+++ b/src/rodassembler.hh
@@ -32,11 +32,11 @@ namespace Dune
         typedef FieldMatrix<double, blocksize, blocksize> MatrixBlock;
         
         //! ???
-        typedef typename FunctionSpaceType::JacobianRange JacobianRange;
+        typedef typename FunctionSpaceType::JacobianRangeType JacobianRange;
         
         //! ???
-        typedef typename FunctionSpaceType::RangeField RangeFieldType;
-        typedef typename FunctionSpaceType::Range       RangeType;
+        typedef typename FunctionSpaceType::RangeFieldType RangeFieldType;
+        typedef typename FunctionSpaceType::RangeType       RangeType;
         
         /** \todo Does actually belong into the base class */
         const GridType* grid_; 
@@ -55,7 +55,7 @@ namespace Dune
         RodAssembler(const FunctionSpaceType &f) : 
             functionSpace_(f)
         { 
-            grid_ = &f.getGrid();
+            grid_ = &f.grid();
             B = 1;
             A1 = 1;
             A3 = 1;
diff --git a/staticrod.cc b/staticrod.cc
index 3b7df9779ef6de7ac9dc1822f456aa8b7bf63644..11e55b4cd8333fa0836eb1efd1810de315216423 100644
--- a/staticrod.cc
+++ b/staticrod.cc
@@ -3,6 +3,7 @@
 #include <dune/grid/onedgrid.hh>
 
 #include <dune/fem/lagrangebase.hh>
+#include <dune/grid/common/gridpart.hh>
 
 #include <dune/istl/io.hh>
 
@@ -94,15 +95,15 @@ int main (int argc, char *argv[]) try
     // //////////////////////////////////////////////////////////
 
     typedef FunctionSpace < double , double, 1, 1 > RodFuncSpace;
-    typedef DefaultGridIndexSet<RodGridType,LevelIndex> RodIndexSet;
-    typedef LagrangeDiscreteFunctionSpace < RodFuncSpace, RodGridType,RodIndexSet,  1> RodFuncSpaceType;
+    typedef LevelGridPart<RodGridType> RodGridPartType;
+    typedef LagrangeDiscreteFunctionSpace < RodFuncSpace, RodGridPartType, 1> RodFuncSpaceType;
 
-    Array<RodIndexSet*> rodIndexSet(maxlevel+1);
+    Array<RodGridPartType*> rodGridPart(maxlevel+1);
     Array<const RodFuncSpaceType*> rodFuncSpace(maxlevel+1);
 
     for (int i=0; i<maxlevel+1; i++) {
-        rodIndexSet[i]  = new RodIndexSet(rod, i);
-        rodFuncSpace[i] = new RodFuncSpaceType(rod, *rodIndexSet[i], i);
+        rodGridPart[i]  = new RodGridPartType(rod, i);
+        rodFuncSpace[i] = new RodFuncSpaceType(*rodGridPart[i]);
     }
 
 
@@ -160,6 +161,7 @@ int main (int argc, char *argv[]) try
 
     for (int i=0; i<obstacles[maxlevel].size(); i++) {
         obstacles[maxlevel][i].clear();
+        obstacles[maxlevel][i].val[0] =     - x[i][0];
         obstacles[maxlevel][i].val[1] = 0.1 - x[i][0];
     }
 
diff --git a/staticrod.parset b/staticrod.parset
index 2f6ce8297806c73453eef78672fc02cac274a4dd..f0b042800fae899c22371bf6e1ea3da9a7bced5c 100644
--- a/staticrod.parset
+++ b/staticrod.parset
@@ -1,13 +1,11 @@
-# Number of grid levels
-minLevel = 0
-
-maxLevel = 0
+# Number of uniform grid refinement steps
+maxLevel = 4
 
 # Initial load increment
-loadIncrement = 1
+loadIncrement = 0.01
 
 # Max number of steps of the Newton solver
-maxNewtonSteps = 10
+maxNewtonSteps = 30
 
 # Number of multigrid iterations per time step
 numIt = 100
@@ -25,7 +23,7 @@ mu = 1
 baseIt = 100
 
 # Tolerance of the solver
-tolerance = -1
+tolerance = 1e-10
 
 # Tolerance of the base grid solver
 baseTolerance = -1
@@ -35,4 +33,4 @@ baseTolerance = -1
 ############################
 
 # Number of elements of the rod grid
-numRodElements = 40
+numRodBaseElements = 5