diff --git a/dune/gfe/chiralskyrmionenergy.hh b/dune/gfe/chiralskyrmionenergy.hh
index 99ee3ca9da0fffb4d619051bc31e0e1b67736501..943e16ab588c8d462b874d895b7df655eec688f4 100644
--- a/dune/gfe/chiralskyrmionenergy.hh
+++ b/dune/gfe/chiralskyrmionenergy.hh
@@ -16,13 +16,15 @@ namespace GFE {
  * The energy is discussed in:
  * - Christof Melcher, "Chiral skyrmions in the plane", Proc. of the Royal Society, online DOI DOI: 10.1098/rspa.2014.0394
  */
-template<class GridView, class LocalFiniteElement, class field_type>
+template<class Basis, class field_type>
 class ChiralSkyrmionEnergy
-: public LocalGeodesicFEStiffness<GridView,LocalFiniteElement,UnitVector<field_type,3> >
+: public LocalGeodesicFEStiffness<Basis,UnitVector<field_type,3> >
 {
   // various useful types
   typedef UnitVector<field_type,3> TargetSpace;
-  typedef typename GridView::Grid::ctype DT;
+  typedef typename Basis::GridView GridView;
+  typedef typename Basis::LocalView::Tree::FiniteElement LocalFiniteElement;
+  typedef typename GridView::ctype DT;
   typedef typename TargetSpace::ctype RT;
   typedef typename GridView::template Codim<0>::Entity Entity;
 
@@ -49,9 +51,9 @@ public:
   field_type kappa_;
 };
 
-template <class GridView, class LocalFiniteElement, class field_type>
-typename ChiralSkyrmionEnergy<GridView, LocalFiniteElement, field_type>::RT
-ChiralSkyrmionEnergy<GridView, LocalFiniteElement, field_type>::
+template <class Basis, class field_type>
+typename ChiralSkyrmionEnergy<Basis, field_type>::RT
+ChiralSkyrmionEnergy<Basis, field_type>::
 energy(const Entity& element,
        const LocalFiniteElement& localFiniteElement,
        const std::vector<TargetSpace>& localConfiguration) const
diff --git a/dune/gfe/geodesicfeassembler.hh b/dune/gfe/geodesicfeassembler.hh
index 8528b9110871fc1b8761e83574275442e37792ae..42e67c44977e0c38a367e90b631a1914dec27bc6 100644
--- a/dune/gfe/geodesicfeassembler.hh
+++ b/dune/gfe/geodesicfeassembler.hh
@@ -32,15 +32,13 @@ public:
 
 protected:
 
-    LocalGeodesicFEStiffness<GridView,
-                             typename Basis::LocalView::Tree::FiniteElement,
-                             TargetSpace>* localStiffness_;
+    LocalGeodesicFEStiffness<Basis,TargetSpace>* localStiffness_;
 
 public:
 
     /** \brief Constructor for a given grid */
     GeodesicFEAssembler(const Basis& basis,
-                        LocalGeodesicFEStiffness<GridView,typename Basis::LocalView::Tree::FiniteElement, TargetSpace>* localStiffness)
+                        LocalGeodesicFEStiffness<Basis, TargetSpace>* localStiffness)
         : basis_(basis),
           basisIndexSet_(basis_.indexSet()),
           localStiffness_(localStiffness)
diff --git a/dune/gfe/harmonicenergystiffness.hh b/dune/gfe/harmonicenergystiffness.hh
index bd9134007af5f9b2c75c6341b965a184508c6ce6..170973189ad4d2e710a47da1e491da7fa99d2f3f 100644
--- a/dune/gfe/harmonicenergystiffness.hh
+++ b/dune/gfe/harmonicenergystiffness.hh
@@ -7,12 +7,14 @@
 #include "localgeodesicfestiffness.hh"
 #include "localgeodesicfefunction.hh"
 
-template<class GridView, class LocalFiniteElement, class TargetSpace>
+template<class Basis, class TargetSpace>
 class HarmonicEnergyLocalStiffness
-    : public LocalGeodesicFEStiffness<GridView,LocalFiniteElement,TargetSpace>
+    : public LocalGeodesicFEStiffness<Basis,TargetSpace>
 {
     // grid types
-    typedef typename GridView::Grid::ctype DT;
+    typedef typename Basis::GridView GridView;
+    typedef typename Basis::LocalView::Tree::FiniteElement LocalFiniteElement;
+    typedef typename GridView::ctype DT;
     typedef typename TargetSpace::ctype RT;
     typedef typename GridView::template Codim<0>::Entity Entity;
 
@@ -31,9 +33,9 @@ public:
 
 };
 
-template <class GridView, class LocalFiniteElement, class TargetSpace>
-typename HarmonicEnergyLocalStiffness<GridView, LocalFiniteElement, TargetSpace>::RT
-HarmonicEnergyLocalStiffness<GridView, LocalFiniteElement, TargetSpace>::
+template <class Basis, class TargetSpace>
+typename HarmonicEnergyLocalStiffness<Basis, TargetSpace>::RT
+HarmonicEnergyLocalStiffness<Basis, TargetSpace>::
 energy(const Entity& element,
        const LocalFiniteElement& localFiniteElement,
        const std::vector<TargetSpace>& localSolution) const
diff --git a/dune/gfe/localgeodesicfeadolcstiffness.hh b/dune/gfe/localgeodesicfeadolcstiffness.hh
index f31251cf858079fd621de379feed1b1fa52256e6..412a0948a0a1580b79a72b632ba0e63c689e9521 100644
--- a/dune/gfe/localgeodesicfeadolcstiffness.hh
+++ b/dune/gfe/localgeodesicfeadolcstiffness.hh
@@ -18,12 +18,14 @@
 
 /** \brief Assembles energy gradient and Hessian with ADOL-C (automatic differentiation)
  */
-template<class GridView, class LocalFiniteElement, class TargetSpace>
+template<class Basis, class TargetSpace>
 class LocalGeodesicFEADOLCStiffness
-    : public LocalGeodesicFEStiffness<GridView,LocalFiniteElement,TargetSpace>
+    : public LocalGeodesicFEStiffness<Basis,TargetSpace>
 {
     // grid types
-    typedef typename GridView::Grid::ctype DT;
+    typedef typename Basis::GridView GridView;
+    typedef typename Basis::LocalView::Tree::FiniteElement LocalFiniteElement;
+    typedef typename GridView::ctype DT;
     typedef typename TargetSpace::ctype RT;
     typedef typename GridView::template Codim<0>::Entity Entity;
 
@@ -40,7 +42,7 @@ public:
     //! Dimension of the embedding space
     enum { embeddedBlocksize = TargetSpace::EmbeddedTangentVector::dimension };
 
-    LocalGeodesicFEADOLCStiffness(const LocalGeodesicFEStiffness<GridView, LocalFiniteElement, ATargetSpace>* energy)
+    LocalGeodesicFEADOLCStiffness(const LocalGeodesicFEStiffness<Basis, ATargetSpace>* energy)
     : localEnergy_(energy)
     {}
 
@@ -67,14 +69,14 @@ public:
                          const std::vector<TargetSpace>& localSolution,
                          std::vector<typename TargetSpace::TangentVector>& localGradient);
 
-    const LocalGeodesicFEStiffness<GridView, LocalFiniteElement, ATargetSpace>* localEnergy_;
+    const LocalGeodesicFEStiffness<Basis, ATargetSpace>* localEnergy_;
 
 };
 
 
-template <class GridView, class LocalFiniteElement, class TargetSpace>
-typename LocalGeodesicFEADOLCStiffness<GridView, LocalFiniteElement, TargetSpace>::RT
-LocalGeodesicFEADOLCStiffness<GridView, LocalFiniteElement, TargetSpace>::
+template <class Basis, class TargetSpace>
+typename LocalGeodesicFEADOLCStiffness<Basis, TargetSpace>::RT
+LocalGeodesicFEADOLCStiffness<Basis, TargetSpace>::
 energy(const Entity& element,
        const LocalFiniteElement& localFiniteElement,
        const std::vector<TargetSpace>& localSolution) const
@@ -122,8 +124,8 @@ energy(const Entity& element,
 }
 
 
-template <class GridView, class LocalFiniteElement, class TargetSpace>
-void LocalGeodesicFEADOLCStiffness<GridView, LocalFiniteElement, TargetSpace>::
+template <class Basis, class TargetSpace>
+void LocalGeodesicFEADOLCStiffness<Basis, TargetSpace>::
 assembleGradient(const Entity& element,
                  const LocalFiniteElement& localFiniteElement,
                  const std::vector<TargetSpace>& localSolution,
@@ -170,8 +172,8 @@ assembleGradient(const Entity& element,
 //   To compute the Hessian we need to compute the gradient anyway, so we may
 //   as well return it.  This saves assembly time.
 // ///////////////////////////////////////////////////////////
-template <class GridType, class LocalFiniteElement, class TargetSpace>
-void LocalGeodesicFEADOLCStiffness<GridType, LocalFiniteElement, TargetSpace>::
+template <class Basis, class TargetSpace>
+void LocalGeodesicFEADOLCStiffness<Basis, TargetSpace>::
 assembleGradientAndHessian(const Entity& element,
                 const LocalFiniteElement& localFiniteElement,
                 const std::vector<TargetSpace>& localSolution,
diff --git a/dune/gfe/localgeodesicfestiffness.hh b/dune/gfe/localgeodesicfestiffness.hh
index a49e84cea5a96c4457d118c760a3701a8f92d347..ed782db175a0af8affa8e8e480f1d8e752313356 100644
--- a/dune/gfe/localgeodesicfestiffness.hh
+++ b/dune/gfe/localgeodesicfestiffness.hh
@@ -7,11 +7,13 @@
 #include <dune/istl/matrix.hh>
 
 
-template<class GridView, class LocalFiniteElement, class TargetSpace>
+template<class Basis, class TargetSpace>
 class LocalGeodesicFEStiffness
 {
     // grid types
-    typedef typename GridView::Grid::ctype DT;
+    typedef typename Basis::GridView GridView;
+    typedef typename Basis::LocalView::Tree::FiniteElement LocalFiniteElement;
+    typedef typename GridView::ctype DT;
     typedef typename TargetSpace::ctype RT;
     typedef typename GridView::template Codim<0>::Entity Entity;
 
@@ -63,8 +65,8 @@ public:
 };
 
 
-template <class GridView, class LocalFiniteElement, class TargetSpace>
-void LocalGeodesicFEStiffness<GridView, LocalFiniteElement, TargetSpace>::
+template <class Basis, class TargetSpace>
+void LocalGeodesicFEStiffness<Basis, TargetSpace>::
 assembleGradient(const Entity& element,
                  const LocalFiniteElement& localFiniteElement,
                  const std::vector<TargetSpace>& localSolution,
@@ -77,8 +79,8 @@ assembleGradient(const Entity& element,
 // ///////////////////////////////////////////////////////////
 //   Compute gradient by finite-difference approximation
 // ///////////////////////////////////////////////////////////
-template <class GridType, class LocalFiniteElement, class TargetSpace>
-void LocalGeodesicFEStiffness<GridType, LocalFiniteElement, TargetSpace>::
+template <class Basis, class TargetSpace>
+void LocalGeodesicFEStiffness<Basis, TargetSpace>::
 assembleGradientAndHessian(const Entity& element,
                 const LocalFiniteElement& localFiniteElement,
                 const std::vector<TargetSpace>& localSolution,
diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index 101bc48229a769cd8bc2ef39f14585a8849db02f..69f64917d23bb5d24503566f84e594ce426e7f36 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -177,25 +177,23 @@ int main (int argc, char *argv[]) try
 
     // Assembler using ADOL-C
     typedef TargetSpace::rebind<adouble>::other ATargetSpace;
-    std::shared_ptr<LocalGeodesicFEStiffness<GridType::LeafGridView,FEBasis::LocalView::Tree::FiniteElement,ATargetSpace> > localEnergy;
+    std::shared_ptr<LocalGeodesicFEStiffness<FEBasis,ATargetSpace> > localEnergy;
 
     std::string energy = parameterSet.get<std::string>("energy");
     if (energy == "harmonic")
     {
 
-      localEnergy.reset(new HarmonicEnergyLocalStiffness<GridType::LeafGridView, FEBasis::LocalView::Tree::FiniteElement, ATargetSpace>);
+      localEnergy.reset(new HarmonicEnergyLocalStiffness<FEBasis, ATargetSpace>);
 
     } else if (energy == "chiral_skyrmion")
     {
 
-      localEnergy.reset(new GFE::ChiralSkyrmionEnergy<GridType::LeafGridView, FEBasis::LocalView::Tree::FiniteElement, adouble>(parameterSet.sub("energyParameters")));
+      localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, adouble>(parameterSet.sub("energyParameters")));
 
     } else
       DUNE_THROW(Exception, "Unknown energy type '" << energy << "'");
 
-    LocalGeodesicFEADOLCStiffness<GridType::LeafGridView,
-                                  FEBasis::LocalView::Tree::FiniteElement,
-                                  TargetSpace> localGFEADOLCStiffness(localEnergy.get());
+    LocalGeodesicFEADOLCStiffness<FEBasis,TargetSpace> localGFEADOLCStiffness(localEnergy.get());
 
     GeodesicFEAssembler<FEBasis,TargetSpace> assembler(feBasis, &localGFEADOLCStiffness);