diff --git a/dune/fufem/assemblers/localassemblers/secondorderoperatorassembler.hh b/dune/fufem/assemblers/localassemblers/secondorderoperatorassembler.hh
index af17e6a890e6389477a653a7e69235d46629bfda..4edf3db4c6a4a3ad2d967d37b4fe14134ab97181 100644
--- a/dune/fufem/assemblers/localassemblers/secondorderoperatorassembler.hh
+++ b/dune/fufem/assemblers/localassemblers/secondorderoperatorassembler.hh
@@ -9,7 +9,6 @@
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
 #include <dune/common/hybridutilities.hh>
-#include <dune/common/std/apply.hh>
 #include <dune/common/concept.hh>
 
 #include <dune/istl/matrix.hh>
@@ -38,7 +37,7 @@ namespace Concept {
 
         template<class F>
         auto require(F&& f) -> decltype(
-            Dune::Std::apply(f, args)
+            std::apply(f, args)
         );
     };
 
@@ -54,7 +53,7 @@ namespace Concept {
 
         template<class F>
         auto require(F&& f) -> decltype(
-            Dune::MatrixVector::addProduct(r, s, Dune::Std::apply(f, args))
+            Dune::MatrixVector::addProduct(r, s, std::apply(f, args))
         );
     };
 
@@ -255,7 +254,7 @@ public:
                     };
                     Dune::MatrixVector::addProduct(
                         localMatrix[i][j], z,
-                        Dune::Std::apply(boundContraction, returnValues));
+                        std::apply(boundContraction, returnValues));
                 }
             }
         }
diff --git a/dune/fufem/dgindexset.hh b/dune/fufem/dgindexset.hh
index 3b13365e2b2bcb05544acffc2b501dd246a245ce..ad23c5223510d3f8965c4daa718a57c167bba9f8 100644
--- a/dune/fufem/dgindexset.hh
+++ b/dune/fufem/dgindexset.hh
@@ -21,7 +21,7 @@ public:
 
     void setup(const GridView& gridView) {
 
-        mapper_.update();
+        mapper_.update(gridView);
 
         const int dim = GridView::dimension;
 
diff --git a/dune/fufem/dgpqkindexset.hh b/dune/fufem/dgpqkindexset.hh
index 1a12236061c9797dafb3eec8b90cf688c59b220f..894b66d2c6dd6b6822b6c15d605ae551509f853d 100644
--- a/dune/fufem/dgpqkindexset.hh
+++ b/dune/fufem/dgpqkindexset.hh
@@ -21,7 +21,7 @@ public:
 
         typedef typename GridView::template Codim<0>::Iterator ElementIterator;
         
-        mapper_.update();
+        mapper_.update(gridview);
 
         const int dim = GridView::dimension;
         
diff --git a/dune/fufem/functionspacebases/p0basis.hh b/dune/fufem/functionspacebases/p0basis.hh
index 8010caccd936dabb43b4f2d4eb84a52da6abf6d0..df57394c7e5d6e6a497ce04e5ef9bf3070d7e241 100644
--- a/dune/fufem/functionspacebases/p0basis.hh
+++ b/dune/fufem/functionspacebases/p0basis.hh
@@ -67,7 +67,7 @@ class P0Basis :
         void update(const GridView& gridview)
         {
             Base::update(gridview);
-            mapper_.update();
+            mapper_.update(gridview);
         }
 
         const LocalFiniteElement& getLocalFiniteElement(const Element& e) const
diff --git a/dune/fufem/functionspacebases/p2hierarchicalbasis.hh b/dune/fufem/functionspacebases/p2hierarchicalbasis.hh
index 953c0efbfe3ab5d2cc4a8763258926b4141b7cd6..2e410714588c0dfcf8145426ce248474a7f515ad 100644
--- a/dune/fufem/functionspacebases/p2hierarchicalbasis.hh
+++ b/dune/fufem/functionspacebases/p2hierarchicalbasis.hh
@@ -66,7 +66,7 @@ class P2HierarchicalBasis :
         void update(const GridView& gridview)
         {
             Base::update(gridview);
-            mapper_.update();
+            mapper_.update(gridview);
         }
 
         const LocalFiniteElement& getLocalFiniteElement(const Element& e) const
diff --git a/dune/fufem/functionspacebases/p2nodalbasis.hh b/dune/fufem/functionspacebases/p2nodalbasis.hh
index 99568ff6ab9c3b718c45a52c8d1858885cb4b069..b458011cb42742de969acabcb964bf6113518dcc 100644
--- a/dune/fufem/functionspacebases/p2nodalbasis.hh
+++ b/dune/fufem/functionspacebases/p2nodalbasis.hh
@@ -85,7 +85,7 @@ class P2NodalBasis :
         void update(const GridView& gridview)
         {
             Base::update(gridview);
-            mapper_.update();
+            mapper_.update(gridview);
         }
 
         const LocalFiniteElement& getLocalFiniteElement(const Element& e) const
diff --git a/dune/fufem/functionspacebases/q1nodalbasis.hh b/dune/fufem/functionspacebases/q1nodalbasis.hh
index 129c7f21c2b17ce7fffd068c75f657bd29ad4860..0cd1dd937dae5ae4953b2ae74152c10e899534cb 100644
--- a/dune/fufem/functionspacebases/q1nodalbasis.hh
+++ b/dune/fufem/functionspacebases/q1nodalbasis.hh
@@ -18,7 +18,7 @@
 
 #include <dune/geometry/type.hh>
 
-#include <dune/localfunctions/lagrange/q1.hh>
+#include <dune/localfunctions/lagrange/lagrangecube.hh>
 
 
 #include <dune/fufem/functionspacebases/functionspacebasis.hh>
@@ -28,10 +28,10 @@
 template <class GV, class RT=double>
 class Q1NodalBasis :
     public FunctionSpaceBasis<GV, RT,
-        typename Dune::template Q1LocalFiniteElement<typename GV::Grid::ctype, RT, GV::Grid::dimension> >
+        typename Dune::template LagrangeCubeLocalFiniteElement<typename GV::Grid::ctype, RT, GV::Grid::dimension, 1> >
 {
     protected:
-        typedef typename Dune::template Q1LocalFiniteElement<typename GV::Grid::ctype, RT, GV::Grid::dimension> LFE;
+        typedef typename Dune::template LagrangeCubeLocalFiniteElement<typename GV::Grid::ctype, RT, GV::Grid::dimension, 1> LFE;
         typedef FunctionSpaceBasis<GV, RT, LFE> Base;
         typedef typename Base::Element Element;
 
diff --git a/dune/fufem/functionspacebases/refinedp0basis.hh b/dune/fufem/functionspacebases/refinedp0basis.hh
index 1385bd1ccc56e29f2a9a7766fdb2902cdaf53a21..9f4b2b9cb980bc914441a542e2abd9348062f7bc 100644
--- a/dune/fufem/functionspacebases/refinedp0basis.hh
+++ b/dune/fufem/functionspacebases/refinedp0basis.hh
@@ -48,7 +48,7 @@ class RefinedP0Basis :
         void update(const GridView& gridview)
         {
             gridview_ = gridview;
-            mapper_.update();
+            mapper_.update(gridview);
         }
 
         size_t size() const
diff --git a/dune/fufem/functionspacebases/refinedp1nodalbasis.hh b/dune/fufem/functionspacebases/refinedp1nodalbasis.hh
index cc9e699d820466ddd205efedb8d53f3feb44c18a..33f110122253bb9e2ca2f290eb81c82fe8df026f 100644
--- a/dune/fufem/functionspacebases/refinedp1nodalbasis.hh
+++ b/dune/fufem/functionspacebases/refinedp1nodalbasis.hh
@@ -52,7 +52,7 @@ class RefinedP1NodalBasis :
         void update(const GridView& gridview)
         {
             Base::update(gridview);
-            mapper_.update();
+            mapper_.update(gridview);
         }
 
         const LocalFiniteElement& getLocalFiniteElement([[maybe_unused]] const Element& e) const
diff --git a/dune/fufem/makesphere.hh b/dune/fufem/makesphere.hh
index 5a773ef5e749256a8a480d35ae06ac2519c9866d..556586f007fc17bd472467d443687beb753739d0 100644
--- a/dune/fufem/makesphere.hh
+++ b/dune/fufem/makesphere.hh
@@ -5,6 +5,7 @@
 
 #include <cmath>
 #include <memory>
+#include <type_traits>
 
 #include <dune/common/hybridutilities.hh>
 
@@ -51,8 +52,7 @@ public:
 
 /** \brief Class implementing a spherical triangular segment */
 class SphereTriSegment
-: public Dune::VirtualFunction<Dune::FieldVector<double,2>,Dune::FieldVector<double,3> >,
-  public Dune::BoundarySegment<3>
+  : public Dune::BoundarySegment<3>
 {
 public:
     SphereTriSegment(const Dune::FieldVector<double,3>& a,
@@ -79,11 +79,6 @@ public:
         return result;
     }
 
-    virtual void evaluate(const Dune::FieldVector<double,2>& local, Dune::FieldVector<double, 3>& global) const
-    {
-        global = operator()(local);
-    }
-
     Dune::FieldVector<double, 3> a_, b_, c_;
 
     Dune::FieldVector<double, 3> center_;
@@ -184,7 +179,7 @@ std::unique_ptr<GridType> makeSphereOnOctahedron(const Dune::FieldVector<field_t
   for (int i=0; i<8; i++)
   {
     // If the grid is sd the element boundaries carry a parametrization
-    Dune::Hybrid::ifElse(Dune::Std::bool_constant<GridType::dimension==3>{},
+    Dune::Hybrid::ifElse(std::bool_constant<GridType::dimension==3>{},
     [&](auto id)
     {
         auto boundarySegment = std::make_shared<SphereTriSegment>(pos[segments[i][0]],
@@ -202,7 +197,7 @@ std::unique_ptr<GridType> makeSphereOnOctahedron(const Dune::FieldVector<field_t
     else
       cornerIDs = {segments[i][0], segments[i][1], segments[i][2], 6};
 
-    Dune::Hybrid::ifElse(Dune::Std::bool_constant<GridType::dimension==2>{},
+    Dune::Hybrid::ifElse(std::bool_constant<GridType::dimension==2>{},
     [&](auto id)
     {
       // Insert parametrized element
diff --git a/dune/fufem/python/common.hh b/dune/fufem/python/common.hh
index 8ab5db55302d3810bcfa8a0311fbff5bc068688a..2e35dd4f9d4d0aa8e97fa774af34bb3365d35432 100644
--- a/dune/fufem/python/common.hh
+++ b/dune/fufem/python/common.hh
@@ -12,9 +12,9 @@
 #include <string>
 #include <sstream>
 #include <type_traits>
+#include <tuple>
 
 #include <dune/common/exceptions.hh>
-#include <dune/common/std/apply.hh>
 
 #include <dune/functions/common/signature.hh>
 #include <dune/functions/common/differentiablefunctionfromcallables.hh>
@@ -570,7 +570,7 @@ auto makeDifferentiableFunction(const R&... f)
     auto signatureTag = Dune::Functions::SignatureTag<Signature, DerivativeTraits>();
     auto derivativeSignatureTags = Dune::Functions::derivativeSignatureTags<sizeof...(f)-1>(signatureTag);
 
-    return Dune::Std::apply([&f..., &signatureTag](auto... tag) {
+    return std::apply([&f..., &signatureTag](auto... tag) {
             return Dune::Functions::makeDifferentiableFunctionFromCallables(signatureTag,
                 makeFunction<typename decltype(tag)::Signature>(f)...);
         }, derivativeSignatureTags);