diff --git a/src/07-poisson-problem-functions.cc b/src/07-poisson-problem-functions.cc
index 48cabd1b5807bbb8897cb6755eb6ad644c78bcdf..f75882fd12900eb0d71e7e581072629a89f1a676 100644
--- a/src/07-poisson-problem-functions.cc
+++ b/src/07-poisson-problem-functions.cc
@@ -39,7 +39,7 @@
 #include <dune/localfunctions/lagrange/pqkfactory.hh>
 
 // included dune-functions headers
-#include <dune/functions/functionspacebases/pqknodalbasis.hh>
+#include <dune/functions/functionspacebases/lagrangebasis.hh>
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
 
@@ -74,12 +74,10 @@ void assemblePoissonProblem(
   ElementRhs elementRhs;
 
   auto localView = basis.localView();
-  auto localIndexSet = basis.localIndexSet();
 
   for(const auto& e: Dune::elements(gridView))
   {
     localView.bind(e);
-    localIndexSet.bind(localView);
 
     const auto& localFiniteElement = localView.tree().finiteElement();
 
@@ -90,10 +88,10 @@ void assemblePoissonProblem(
 
     for(std::size_t i=0; i<localSize; ++i)
     {
-      std::size_t globalI = localIndexSet.index(i);
+      std::size_t globalI = localView.index(i);
       for(std::size_t j=0; j<localSize; ++j)
       {
-        std::size_t globalJ = localIndexSet.index(j);
+        std::size_t globalJ = localView.index(j);
         matrixBuilder[globalI][globalJ] += elementMatrix[i][j];
       }
 
@@ -110,12 +108,10 @@ void computeBoundaryVertices(const GridView& gridView, BitVector& isBoundary, co
   using namespace Dune::FuTutorial;
 
   auto localView = basis.localView();
-  auto localIndexSet = basis.localIndexSet();
 
   for(const auto& element: elements(gridView))
   {
     localView.bind(element);
-    localIndexSet.bind(localView);
 
     const auto& localFiniteElement = localView.tree().finiteElement();
     std::size_t localSize = localFiniteElement.localBasis().size();
@@ -130,7 +126,7 @@ void computeBoundaryVertices(const GridView& gridView, BitVector& isBoundary, co
           if (localKey.codim() > 0)
             for(const auto& subEntity: subEntities(referenceElement(element), insideFacet(intersection), codim(localKey.codim())))
               if (subEntity == localKey.subEntity())
-                isBoundary[localIndexSet.index(i)] = true;
+                isBoundary[localView.index(i)] = true;
         }
       }
     }
@@ -191,7 +187,7 @@ int main(int argc, char** argv)
     };
 
 
-    using Basis = typename Dune::Functions::PQkNodalBasis<GridView,4>;
+    using Basis = typename Dune::Functions::LagrangeBasis<GridView,4>;
     Basis basis(gridView);
 
     assemblePoissonProblem(gridView, A, rhs, rhsFunction, basis);
@@ -201,7 +197,6 @@ int main(int argc, char** argv)
     auto dirichletFunction = [](auto x) {
       return sin(x[0] * 2.0*M_PI)*.1;
     };
-//    Dune::Functions::interpolate(basis, Dune::TypeTree::hybridTreePath(), dirichletNodes, dirichletFunction);
     Dune::Functions::interpolate(basis, x, dirichletFunction);
 
     std::vector<bool> isBoundary;