diff --git a/dune/gfe/rodfactory.hh b/dune/gfe/rodfactory.hh
index 55e60b38f5e27b7fa3fb6762b1696f0cba8f5b15..edfd47705fd4132f10c7fb19867fce4fdce975e8 100644
--- a/dune/gfe/rodfactory.hh
+++ b/dune/gfe/rodfactory.hh
@@ -190,7 +190,9 @@ void create(std::vector<RigidBodyMotion<double,spaceDim> >& rod,
     RodLocalStiffness<GridView,double> rodLocalStiffness(gridView_, radius*radius*M_PI,
             std::pow(radius,4) * 0.25* M_PI, std::pow(radius,4) * 0.25* M_PI, E, nu);
 
-    RodAssembler<GridView,spaceDim> assembler(gridView_, &rodLocalStiffness);
+    typedef Dune::Functions::PQKNodalBasis<GridView,1> RodP1Basis;
+    RodP1Basis p1Basis(gridView_);
+    RodAssembler<RodP1Basis,spaceDim> assembler(p1Basis, &rodLocalStiffness);
 
     // Create initial iterate using the straight rod interpolation method
     create(rod, beginning.r, end.r);
@@ -203,7 +205,7 @@ void create(std::vector<RigidBodyMotion<double,spaceDim> >& rod,
     rod.back() = end;
 
     // Trust--Region solver
-    RiemannianTrustRegionSolver<typename GridView::Grid, RigidBodyMotion<double,spaceDim> > rodSolver;
+    RiemannianTrustRegionSolver<RodP1Basis, RigidBodyMotion<double,spaceDim> > rodSolver;
     rodSolver.setup(gridView_.grid(), &assembler, rod,
             rodDirichletNodes,
             1e-10, 100, // TR tolerance and iterations