diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index c46797a9ced89dd47b7bf0ed6180d5c514bc51db..2538ccc5b1500c883d19c59fb55b517d594937ce 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -115,13 +115,12 @@ void setup_boundary(GridType const &grid,
 }
 
 // Assembles Neumann boundary term in f
-template <class GridType, class LocalVectorType, class FEBasis>
-void assemble_neumann(GridType const &grid, FEBasis const &feBasis,
+template <class GridType, class GridView, class LocalVectorType, class FEBasis>
+void assemble_neumann(GridView const &gridView, FEBasis const &feBasis,
                       Dune::BitSetVector<1> const &neumannNodes,
                       Dune::BlockVector<LocalVectorType> &
                           f) { // constant sample function on neumann boundary
-  BoundaryPatch<typename GridType::LeafGridView> neumannBoundary(
-      grid.leafView(), neumannNodes);
+  BoundaryPatch<GridView> neumannBoundary(gridView, neumannNodes);
   LocalVectorType SampleVector;
   // FIXME: random values
   SampleVector[0] = 1;
@@ -138,13 +137,12 @@ void assemble_neumann(GridType const &grid, FEBasis const &feBasis,
 }
 
 // Assembles constant 1-function on frictional boundary in nodalIntegrals
-template <class GridType, class LocalVectorType, class FEBasis>
+template <class GridType, class GridView, class LocalVectorType, class FEBasis>
 void assemble_frictional(
-    GridType const &grid, FEBasis const &feBasis,
+    GridView const &gridView, FEBasis const &feBasis,
     Dune::BitSetVector<1> const &frictionalNodes,
     std::vector<Dune::FieldVector<double, 1>> &nodalIntegrals) {
-  BoundaryPatch<typename GridType::LeafGridView> frictionalBoundary(
-      grid.leafView(), frictionalNodes);
+  BoundaryPatch<GridView> frictionalBoundary(gridView, frictionalNodes);
   ConstantFunction<LocalVectorType, Dune::FieldVector<double, 1>>
   constantOneFunction(1);
   NeumannBoundaryAssembler<GridType, Dune::FieldVector<double, 1>>
@@ -206,13 +204,14 @@ int main() {
     VectorType u2 = u1;
 
     VectorType f(grid.size(grid.maxLevel(), dim));
-    assemble_neumann<GridType, SmallVector, P1Basis>(grid, p1Basis,
-                                                     neumannNodes, f);
+    assemble_neumann<GridType, GridType::LeafGridView, SmallVector, P1Basis>(
+        grid.leafView(), p1Basis, neumannNodes, f);
 
     {
       std::vector<Dune::FieldVector<double, 1>> nodalIntegrals;
-      assemble_frictional<GridType, SmallVector, P1Basis>(
-          grid, p1Basis, frictionalNodes, nodalIntegrals);
+      assemble_frictional<GridType, GridType::LeafGridView, SmallVector,
+                          P1Basis>(grid.leafView(), p1Basis, frictionalNodes,
+                                   nodalIntegrals);
 
       // TODO: populate on S_F
       std::vector<double> normalStress;