diff --git a/src/linear-elasticity.cc b/src/linear-elasticity.cc
index d3c4a2fc80c27315baf17e6fa8ebbef8799b52f7..2207aa88fa982b28e12d7d71834dfdb1db27b672 100644
--- a/src/linear-elasticity.cc
+++ b/src/linear-elasticity.cc
@@ -10,10 +10,10 @@
 
 #include <dune/istl/io.hh>
 
+#include <dune/functions/functionspacebases/lagrangebasis.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>
 #include <dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh>
 #include <dune/fufem/sampleonbitfield.hh>
@@ -23,6 +23,7 @@
 #include <dune/fufem/readbitfield.hh>
 #include <dune/fufem/estimators/fractionalmarking.hh>
 #include <dune/fufem/estimators/hierarchicalestimator.hh>
+#include <dune/fufem/functionspacebases/dunefunctionsbasis.hh>
 
 #ifdef HAVE_IPOPT
 #include <dune/solvers/solvers/quadraticipopt.hh>
@@ -138,8 +139,9 @@ int main (int argc, char *argv[]) try
 
     while (true) {
 
-        typedef P1NodalBasis<GridType::LeafGridView,double> P1Basis;
-        P1Basis p1NodalBasis(grid->leafGridView());
+        using P1Basis = Dune::Functions::LagrangeBasis<GridType::LeafGridView,1>;
+        using FufemP1Basis = DuneFunctionsBasis<P1Basis>;
+        FufemP1Basis p1NodalBasis(grid->leafGridView());
 
         // Determine fine Dirichlet and Neumann dofs
         LeafBoundaryPatch leafDirichletBoundary(grid->leafGridView());
@@ -172,16 +174,16 @@ int main (int argc, char *argv[]) try
 
             }
         // Assemble elasticity problem#
-        OperatorAssembler<P1Basis,P1Basis> p1Assembler(p1NodalBasis, p1NodalBasis);
+        OperatorAssembler<FufemP1Basis,FufemP1Basis> p1Assembler(p1NodalBasis, p1NodalBasis);
 
-        StVenantKirchhoffAssembler<GridType, P1Basis::LocalFiniteElement, P1Basis::LocalFiniteElement> p1LocalAssembler(E, nu);
+        StVenantKirchhoffAssembler<GridType, FufemP1Basis::LocalFiniteElement, FufemP1Basis::LocalFiniteElement> p1LocalAssembler(E, nu);
         OperatorType stiffnessMatrix;
 
         p1Assembler.assemble(p1LocalAssembler, stiffnessMatrix);
 
         // Assemble Neumann forces
-        BoundaryFunctionalAssembler<P1Basis> boundaryFunctionalAssembler(p1NodalBasis,leafNeumannBoundary);
-        BasisGridFunction<P1Basis,VectorType> neumannFunction(p1NodalBasis, neumannValues);
+        BoundaryFunctionalAssembler<FufemP1Basis> boundaryFunctionalAssembler(p1NodalBasis,leafNeumannBoundary);
+        BasisGridFunction<FufemP1Basis,VectorType> neumannFunction(p1NodalBasis, neumannValues);
 
         NeumannBoundaryAssembler<GridType, Dune::FieldVector<double,3> > localNeumannAssembler(neumannFunction);
         boundaryFunctionalAssembler.assemble(localNeumannAssembler, rhs);
@@ -260,11 +262,13 @@ int main (int argc, char *argv[]) try
         //   Estimate error and refine grid
         // /////////////////////////////////////////////////////////////
 
-        HierarchicalEstimator<P2NodalBasis<GridType::LeafGridView>,dim> estimator(*grid);
+        using P2Basis = Dune::Functions::LagrangeBasis<GridType::LeafGridView,2>;
+        using FufemP2NodalBasis = DuneFunctionsBasis<P2Basis>;
+        HierarchicalEstimator<FufemP2NodalBasis,dim> estimator(*grid);
 
         RefinementIndicator<GridType> indicator(*grid);
 
-        typedef P2NodalBasis<GridType::LeafGridView>::LocalFiniteElement P2FiniteElement;
+        typedef FufemP2NodalBasis::LocalFiniteElement P2FiniteElement;
         StVenantKirchhoffAssembler<GridType,P2FiniteElement,P2FiniteElement>* localStiffness = new StVenantKirchhoffAssembler<GridType,P2FiniteElement,P2FiniteElement>(E,nu);
 
 
@@ -278,7 +282,7 @@ int main (int argc, char *argv[]) try
         //   Refine grid
         // ////////////////////////////////////////////////////
 
-        GridFunctionAdaptor<P1Basis> adaptorP1(p1NodalBasis,true,true);
+        GridFunctionAdaptor<FufemP1Basis> adaptorP1(p1NodalBasis,true,true);
 
         grid->preAdapt();
         grid->adapt();