diff --git a/CHANGELOG.md b/CHANGELOG.md
index 26d0bd10d7839b5bb6a9321b82dc0d30a69770f8..6fcba5884adfb23cf36fa7bb1828b9ffc1749741 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Master
 
+- All files that implement assemblers have been moved to the
+  `assemblers` subdirectory.
+  
 - All files that implement target spaces have been moved to the
   `spaces` subdirectory.
 
diff --git a/dune/gfe/CMakeLists.txt b/dune/gfe/CMakeLists.txt
index 52fdc576e01a196f19f7fedd39c3886d26dcc2c8..45eb2012a4ef1af90ac7a192f2cb7bbdb5a92b33 100644
--- a/dune/gfe/CMakeLists.txt
+++ b/dune/gfe/CMakeLists.txt
@@ -2,3 +2,4 @@
 install(FILES gfe.hh DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/gfe)
 
 add_subdirectory("spaces")
+add_subdirectory("assemblers")
\ No newline at end of file
diff --git a/dune/gfe/assemblers/CMakeLists.txt b/dune/gfe/assemblers/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a890d6ab41268334e9380c202ed4ceb2ff70783b
--- /dev/null
+++ b/dune/gfe/assemblers/CMakeLists.txt
@@ -0,0 +1,25 @@
+#install headers
+install(FILES
+        chiralskyrmionenergy.hh
+        cosseratenergystiffness.hh
+        cosseratrodenergy.hh
+        geodesicfeassembler.hh
+        geodesicfeassemblerwrapper.hh
+        harmonicenergy.hh
+        l2distancesquaredenergy.hh
+        localenergy.hh
+        localfirstordermodel.hh
+        localgeodesicfeadolcstiffness.hh
+        localgeodesicfefdstiffness.hh
+        localgeodesicfestiffness.hh
+        localintegralenergy.hh
+        mixedgfeassembler.hh
+        mixedlocalgeodesicfestiffness.hh
+        mixedlocalgfeadolcstiffness.hh
+        nonplanarcosseratshellenergy.hh
+        simofoxenergy.hh
+        sumenergy.hh
+        surfacecosseratenergy.hh
+        surfacecosseratstressassembler.hh
+        weightedsumenergy.hh
+        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/gfe/assemblers)
diff --git a/dune/gfe/chiralskyrmionenergy.hh b/dune/gfe/assemblers/chiralskyrmionenergy.hh
similarity index 99%
rename from dune/gfe/chiralskyrmionenergy.hh
rename to dune/gfe/assemblers/chiralskyrmionenergy.hh
index 69b4b7e2ca8d10e8e7cf73eda123b62945096574..059fa068f029ab0c839e5ba0a7527f107de01ea9 100644
--- a/dune/gfe/chiralskyrmionenergy.hh
+++ b/dune/gfe/assemblers/chiralskyrmionenergy.hh
@@ -4,7 +4,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/geometry/quadraturerules.hh>
 
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 
 namespace Dune {
 
diff --git a/dune/gfe/cosseratenergystiffness.hh b/dune/gfe/assemblers/cosseratenergystiffness.hh
similarity index 99%
rename from dune/gfe/cosseratenergystiffness.hh
rename to dune/gfe/assemblers/cosseratenergystiffness.hh
index 4c1883eec10c516d649d0196687655226812e7ee..4e5eceeef995c60dc0bd05b122a65d134721353b 100644
--- a/dune/gfe/cosseratenergystiffness.hh
+++ b/dune/gfe/assemblers/cosseratenergystiffness.hh
@@ -13,12 +13,12 @@
 #include <dune/matrix-vector/transpose.hh>
 #endif
 
-#include <dune/gfe/localenergy.hh>
-#include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
+#include <dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh>
 #ifdef PROJECTED_INTERPOLATION
 #include <dune/gfe/localprojectedfefunction.hh>
 #else
-#include "localgeodesicfefunction.hh"
+#include <dune/gfe/localgeodesicfefunction.hh>
 #endif
 #include <dune/gfe/tensor3.hh>
 #include <dune/gfe/cosseratstrain.hh>
diff --git a/dune/gfe/cosseratrodenergy.hh b/dune/gfe/assemblers/cosseratrodenergy.hh
similarity index 99%
rename from dune/gfe/cosseratrodenergy.hh
rename to dune/gfe/assemblers/cosseratrodenergy.hh
index be436f1d5b06aac1d7dfe6595fb8822b031e00ed..11707523d7246e4b04106f46a4bc7673dcde63e7 100644
--- a/dune/gfe/cosseratrodenergy.hh
+++ b/dune/gfe/assemblers/cosseratrodenergy.hh
@@ -16,7 +16,7 @@
 
 #include <dune/fufem/boundarypatch.hh>
 
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
 namespace Dune::GFE {
diff --git a/dune/gfe/geodesicfeassembler.hh b/dune/gfe/assemblers/geodesicfeassembler.hh
similarity index 100%
rename from dune/gfe/geodesicfeassembler.hh
rename to dune/gfe/assemblers/geodesicfeassembler.hh
diff --git a/dune/gfe/geodesicfeassemblerwrapper.hh b/dune/gfe/assemblers/geodesicfeassemblerwrapper.hh
similarity index 99%
rename from dune/gfe/geodesicfeassemblerwrapper.hh
rename to dune/gfe/assemblers/geodesicfeassemblerwrapper.hh
index 5b2ad650aec0074e562a9fec6cb1bdc866b388d2..3294bb50bc7fa2e8283f4b44b971f97ae68aa144 100644
--- a/dune/gfe/geodesicfeassemblerwrapper.hh
+++ b/dune/gfe/assemblers/geodesicfeassemblerwrapper.hh
@@ -1,7 +1,7 @@
 #ifndef GLOBAL_GEODESIC_FE_ASSEMBLERWRAPPER_HH
 #define GLOBAL_GEODESIC_FE_ASSEMBLERWRAPPER_HH
 
-#include <dune/gfe/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
 #include <dune/common/tuplevector.hh>
 #include <dune/gfe/spaces/productmanifold.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
diff --git a/dune/gfe/harmonicenergy.hh b/dune/gfe/assemblers/harmonicenergy.hh
similarity index 98%
rename from dune/gfe/harmonicenergy.hh
rename to dune/gfe/assemblers/harmonicenergy.hh
index eaa0421d311fbdccbe91a0027784b69144951a26..f157a319b26cb4c17caa025bd9a31fc2ae8539a5 100644
--- a/dune/gfe/harmonicenergy.hh
+++ b/dune/gfe/assemblers/harmonicenergy.hh
@@ -4,7 +4,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/geometry/quadraturerules.hh>
 
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 
 template<class Basis, class LocalInterpolationRule, class TargetSpace>
 class HarmonicEnergy
diff --git a/dune/gfe/l2distancesquaredenergy.hh b/dune/gfe/assemblers/l2distancesquaredenergy.hh
similarity index 98%
rename from dune/gfe/l2distancesquaredenergy.hh
rename to dune/gfe/assemblers/l2distancesquaredenergy.hh
index 05e460c9f6dad9546912aaa86dff055130352ffa..46d526bc9f68b41cee500002b4b1863bd6564a8a 100644
--- a/dune/gfe/l2distancesquaredenergy.hh
+++ b/dune/gfe/assemblers/l2distancesquaredenergy.hh
@@ -6,7 +6,7 @@
 #include <dune/geometry/quadraturerules.hh>
 
 #include <dune/gfe/globalgfefunction.hh>
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 
 template<class Basis, class TargetSpace>
diff --git a/dune/gfe/localenergy.hh b/dune/gfe/assemblers/localenergy.hh
similarity index 100%
rename from dune/gfe/localenergy.hh
rename to dune/gfe/assemblers/localenergy.hh
diff --git a/dune/gfe/localfirstordermodel.hh b/dune/gfe/assemblers/localfirstordermodel.hh
similarity index 93%
rename from dune/gfe/localfirstordermodel.hh
rename to dune/gfe/assemblers/localfirstordermodel.hh
index ad5c1903cf122a9caecc6a5a9179dc946eef13a0..3c937e8a58b3eb2f57139838316c8e21a63c6c84 100644
--- a/dune/gfe/localfirstordermodel.hh
+++ b/dune/gfe/assemblers/localfirstordermodel.hh
@@ -1,7 +1,7 @@
 #ifndef DUNE_GFE_LOCALFIRSTORDERMODEL_HH
 #define DUNE_GFE_LOCALFIRSTORDERMODEL_HH
 
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 
 namespace Dune {
 
diff --git a/dune/gfe/localgeodesicfeadolcstiffness.hh b/dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh
similarity index 99%
rename from dune/gfe/localgeodesicfeadolcstiffness.hh
rename to dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh
index 4b5382c21440a58caa205d0cf16513c06400e0cc..3727c6d5b763e526a0922fb08fcc7f6ce11f3d3d 100644
--- a/dune/gfe/localgeodesicfeadolcstiffness.hh
+++ b/dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh
@@ -12,8 +12,8 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/istl/matrix.hh>
 
-#include <dune/gfe/localenergy.hh>
-#include <dune/gfe/localgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
+#include <dune/gfe/assemblers/localgeodesicfestiffness.hh>
 
 /** \brief Assembles energy gradient and Hessian with ADOL-C (automatic differentiation)
  */
diff --git a/dune/gfe/localgeodesicfefdstiffness.hh b/dune/gfe/assemblers/localgeodesicfefdstiffness.hh
similarity index 99%
rename from dune/gfe/localgeodesicfefdstiffness.hh
rename to dune/gfe/assemblers/localgeodesicfefdstiffness.hh
index 61d3cd250f70c4587f2ba6120ca651e9196161fd..5eaa6094c99fe83a771037d13d63cb01360c14f3 100644
--- a/dune/gfe/localgeodesicfefdstiffness.hh
+++ b/dune/gfe/assemblers/localgeodesicfefdstiffness.hh
@@ -4,7 +4,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/istl/matrix.hh>
 
-#include <dune/gfe/localgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/localgeodesicfestiffness.hh>
 
 /** \brief Assembles energy gradient and Hessian with finite difference approximations
  */
diff --git a/dune/gfe/localgeodesicfestiffness.hh b/dune/gfe/assemblers/localgeodesicfestiffness.hh
similarity index 97%
rename from dune/gfe/localgeodesicfestiffness.hh
rename to dune/gfe/assemblers/localgeodesicfestiffness.hh
index ff3d17abf8039de0f9d464d4d4adf6c6519ed25f..a916fbdba1e5fdf09a04cb3259871c0de1f9faf2 100644
--- a/dune/gfe/localgeodesicfestiffness.hh
+++ b/dune/gfe/assemblers/localgeodesicfestiffness.hh
@@ -4,7 +4,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/istl/matrix.hh>
 
-#include <dune/gfe/localfirstordermodel.hh>
+#include <dune/gfe/assemblers/localfirstordermodel.hh>
 
 template<class Basis, class TargetSpace>
 class LocalGeodesicFEStiffness
diff --git a/dune/gfe/localintegralenergy.hh b/dune/gfe/assemblers/localintegralenergy.hh
similarity index 98%
rename from dune/gfe/localintegralenergy.hh
rename to dune/gfe/assemblers/localintegralenergy.hh
index 30cbd6ee80c72b6ed4c66f1e758deb6d5a8b76d7..05c4ed329f3c2eca5b2c4a8b06e23e5802b0d1b6 100644
--- a/dune/gfe/localintegralenergy.hh
+++ b/dune/gfe/assemblers/localintegralenergy.hh
@@ -6,7 +6,7 @@
 
 #include <dune/geometry/quadraturerules.hh>
 
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/spaces/realtuple.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
diff --git a/dune/gfe/mixedgfeassembler.hh b/dune/gfe/assemblers/mixedgfeassembler.hh
similarity index 99%
rename from dune/gfe/mixedgfeassembler.hh
rename to dune/gfe/assemblers/mixedgfeassembler.hh
index a2bf0432ee4b2cb05e3050e4ccd326eccd13cf6d..fe7b1f5b26fc31621a50a668d0c63b34c3f02afd 100644
--- a/dune/gfe/mixedgfeassembler.hh
+++ b/dune/gfe/assemblers/mixedgfeassembler.hh
@@ -7,7 +7,7 @@
 #include <dune/istl/matrix.hh>
 #include <dune/istl/multitypeblockmatrix.hh>
 
-#include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh>
 
 
 /** \brief A global FE assembler for problems involving functions that map into non-Euclidean spaces
diff --git a/dune/gfe/mixedlocalgeodesicfestiffness.hh b/dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh
similarity index 100%
rename from dune/gfe/mixedlocalgeodesicfestiffness.hh
rename to dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh
diff --git a/dune/gfe/mixedlocalgfeadolcstiffness.hh b/dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh
similarity index 99%
rename from dune/gfe/mixedlocalgfeadolcstiffness.hh
rename to dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh
index 92607e323d8cad340cb5b1180bf07cbb440bf270..732657965f413057b08fefc35abdbf17e9645273 100644
--- a/dune/gfe/mixedlocalgfeadolcstiffness.hh
+++ b/dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh
@@ -12,7 +12,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/istl/matrix.hh>
 
-#include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh>
 
 /** \brief Assembles energy gradient and Hessian with ADOL-C (automatic differentiation)
  */
diff --git a/dune/gfe/nonplanarcosseratshellenergy.hh b/dune/gfe/assemblers/nonplanarcosseratshellenergy.hh
similarity index 99%
rename from dune/gfe/nonplanarcosseratshellenergy.hh
rename to dune/gfe/assemblers/nonplanarcosseratshellenergy.hh
index 33bd23c8d4b7ef8c468d493e26de3905eaebd297..bd5385d3cafba58b8aa3fa7bfc93c4f125151ff9 100644
--- a/dune/gfe/nonplanarcosseratshellenergy.hh
+++ b/dune/gfe/assemblers/nonplanarcosseratshellenergy.hh
@@ -15,12 +15,12 @@
 #include <dune/gmsh4/gridcreators/lagrangegridcreator.hh>
 #endif
 
-#include <dune/gfe/cosseratenergystiffness.hh>
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/cosseratenergystiffness.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/tensor3.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 #include <dune/gfe/spaces/unitvector.hh>
 
diff --git a/dune/gfe/simofoxenergy.hh b/dune/gfe/assemblers/simofoxenergy.hh
similarity index 99%
rename from dune/gfe/simofoxenergy.hh
rename to dune/gfe/assemblers/simofoxenergy.hh
index 33f533ca165377c2098d60fdebfd5a7f86bf3f9d..80fbcf21ebc02fc540dc16099fc704d9b55e261f 100644
--- a/dune/gfe/simofoxenergy.hh
+++ b/dune/gfe/assemblers/simofoxenergy.hh
@@ -10,8 +10,8 @@
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/geometry/quadraturerules.hh>
 #include <dune/gfe/linearalgebra.hh>
-#include <dune/gfe/localenergy.hh>
-#include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
+#include <dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh>
 #include <dune/gfe/spaces/realtuple.hh>
 #include <dune/gfe/spaces/unitvector.hh>
 
diff --git a/dune/gfe/sumenergy.hh b/dune/gfe/assemblers/sumenergy.hh
similarity index 94%
rename from dune/gfe/sumenergy.hh
rename to dune/gfe/assemblers/sumenergy.hh
index d5074c6fccabf601400974ffe6b4c6e5b533aa64..a7765747987e39759f5f70f2c4b030cb0b7d758e 100644
--- a/dune/gfe/sumenergy.hh
+++ b/dune/gfe/assemblers/sumenergy.hh
@@ -3,8 +3,8 @@
 
 #include <vector>
 
-#include <dune/gfe/localenergy.hh>
-#include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
+#include <dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh>
 
 namespace Dune::GFE {
 
diff --git a/dune/gfe/surfacecosseratenergy.hh b/dune/gfe/assemblers/surfacecosseratenergy.hh
similarity index 99%
rename from dune/gfe/surfacecosseratenergy.hh
rename to dune/gfe/assemblers/surfacecosseratenergy.hh
index 2174df54eb20d91558e4fcbc7e5a955f5f4b174d..df21fd0247acd49b261f1fa5876abc0d0ed2ef49 100644
--- a/dune/gfe/surfacecosseratenergy.hh
+++ b/dune/gfe/assemblers/surfacecosseratenergy.hh
@@ -8,10 +8,10 @@
 #include <dune/fufem/boundarypatch.hh>
 
 #include <dune/gfe/cosseratstrain.hh>
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/mixedlocalgeodesicfestiffness.hh>
 #include <dune/gfe/tensor3.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
diff --git a/dune/gfe/surfacecosseratstressassembler.hh b/dune/gfe/assemblers/surfacecosseratstressassembler.hh
similarity index 100%
rename from dune/gfe/surfacecosseratstressassembler.hh
rename to dune/gfe/assemblers/surfacecosseratstressassembler.hh
diff --git a/dune/gfe/weightedsumenergy.hh b/dune/gfe/assemblers/weightedsumenergy.hh
similarity index 96%
rename from dune/gfe/weightedsumenergy.hh
rename to dune/gfe/assemblers/weightedsumenergy.hh
index aebc046a224c7b9e113a44ad286d0a909b4dcdff..6fd5df3d5742253db6d0ce4b0595699e2b396738 100644
--- a/dune/gfe/weightedsumenergy.hh
+++ b/dune/gfe/assemblers/weightedsumenergy.hh
@@ -6,7 +6,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/geometry/quadraturerules.hh>
 
-#include <dune/gfe/localenergy.hh>
+#include <dune/gfe/assemblers/localenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 
 template<class Basis, class TargetSpace>
diff --git a/dune/gfe/mixedriemanniantrsolver.hh b/dune/gfe/mixedriemanniantrsolver.hh
index aafe7b3fc79bbd70d5929ee5127ed6c589db8075..107f3da55d0c278ca0d4ef427a83bc44862ebeb8 100644
--- a/dune/gfe/mixedriemanniantrsolver.hh
+++ b/dune/gfe/mixedriemanniantrsolver.hh
@@ -19,7 +19,7 @@
 #include <dune/solvers/solvers/loopsolver.hh>
 #include <dune/solvers/iterationsteps/mmgstep.hh>
 
-#include <dune/gfe/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
 
 /** \brief Riemannian trust-region solver for geodesic finite-element problems */
 template <class GridType,
diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh
index 61017f956384efd1babde011c4e117895f451cc8..78eacc6f8033bb222295ee201903c9e3b1cfac40 100644
--- a/dune/gfe/riemanniantrsolver.hh
+++ b/dune/gfe/riemanniantrsolver.hh
@@ -16,7 +16,7 @@
 #include <dune/solvers/solvers/iterativesolver.hh>
 #include <dune/solvers/solvers/loopsolver.hh>
 
-#include "geodesicfeassembler.hh"
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
 #include <dune/grid/utility/globalindexset.hh>
 #include <dune/gfe/parallel/globalmapper.hh>
 #include <dune/gfe/parallel/globalp1mapper.hh>
diff --git a/src/cosserat-continuum.cc b/src/cosserat-continuum.cc
index 0efd6fce2f2b5d8ca9e41282d5175877d0f8f1b3..b8428902668a8443e21012522dc3fedcc706da0e 100644
--- a/src/cosserat-continuum.cc
+++ b/src/cosserat-continuum.cc
@@ -55,19 +55,19 @@
 
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
-#include <dune/gfe/cosseratenergystiffness.hh>
-#include <dune/gfe/nonplanarcosseratshellenergy.hh>
+#include <dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/cosseratenergystiffness.hh>
+#include <dune/gfe/assemblers/nonplanarcosseratshellenergy.hh>
 #include <dune/gfe/cosseratvtkwriter.hh>
 #include <dune/gfe/cosseratvtkreader.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
 #include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
 
 #if MIXED_SPACE
 #include <dune/gfe/mixedriemanniantrsolver.hh>
 #else
-#include <dune/gfe/geodesicfeassemblerwrapper.hh>
+#include <dune/gfe/assemblers/geodesicfeassemblerwrapper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
diff --git a/src/film-on-substrate-stress-plot.cc b/src/film-on-substrate-stress-plot.cc
index 388828b6746e27c89ca952f3f55cf7567e7a4207..a21523f4348a6ad57d81a2e8170b9525554bb2ec 100644
--- a/src/film-on-substrate-stress-plot.cc
+++ b/src/film-on-substrate-stress-plot.cc
@@ -34,7 +34,7 @@
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/gfe/filereader.hh>
-#include <dune/gfe/surfacecosseratstressassembler.hh>
+#include <dune/gfe/assemblers/surfacecosseratstressassembler.hh>
 #include <dune/gfe/spaces/rotation.hh>
 
 // grid dimension
diff --git a/src/film-on-substrate.cc b/src/film-on-substrate.cc
index fda9a0cbbf014b0711ffd71f6485bbe8d351b1b4..8c7d2bea9fad692bddb3df05b91499cc45ed0589 100644
--- a/src/film-on-substrate.cc
+++ b/src/film-on-substrate.cc
@@ -56,17 +56,17 @@
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/gfe/cosseratvtkwriter.hh>
-#include <dune/gfe/localintegralenergy.hh>
-#include <dune/gfe/mixedgfeassembler.hh>
-#include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/localintegralenergy.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh>
 #include <dune/gfe/neumannenergy.hh>
-#include <dune/gfe/surfacecosseratenergy.hh>
-#include <dune/gfe/sumenergy.hh>
+#include <dune/gfe/assemblers/surfacecosseratenergy.hh>
+#include <dune/gfe/assemblers/sumenergy.hh>
 
 #if MIXED_SPACE
 #include <dune/gfe/mixedriemanniantrsolver.hh>
 #else
-#include <dune/gfe/geodesicfeassemblerwrapper.hh>
+#include <dune/gfe/assemblers/geodesicfeassemblerwrapper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
diff --git a/src/gradient-flow.cc b/src/gradient-flow.cc
index bb8dc917b47bb781a2ac9be2bbf5f2f8171a8299..6ffe005573c0219fc35720bbab099bfee61ffdd0 100644
--- a/src/gradient-flow.cc
+++ b/src/gradient-flow.cc
@@ -34,14 +34,14 @@
 #include <dune/solvers/solvers/iterativesolver.hh>
 #include <dune/solvers/norms/energynorm.hh>
 
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 #include <dune/gfe/globalgfefunction.hh>
 #include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/harmonicenergy.hh>
-#include <dune/gfe/l2distancesquaredenergy.hh>
-#include <dune/gfe/weightedsumenergy.hh>
+#include <dune/gfe/assemblers/harmonicenergy.hh>
+#include <dune/gfe/assemblers/l2distancesquaredenergy.hh>
+#include <dune/gfe/assemblers/weightedsumenergy.hh>
 #include <dune/gfe/spaces/unitvector.hh>
 
 // grid dimension
diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index cf9c5243d37f1aba5120ffc4f173413c72b49c5d..8a45a3a845290759096fb79c4435006373669799 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -40,10 +40,10 @@
 
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/harmonicenergy.hh>
-#include <dune/gfe/chiralskyrmionenergy.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/harmonicenergy.hh>
+#include <dune/gfe/assemblers/chiralskyrmionenergy.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 #include <dune/gfe/embeddedglobalgfefunction.hh>
 #include <dune/gfe/spaces/realtuple.hh>
diff --git a/src/rod3d.cc b/src/rod3d.cc
index 63112aa1ca74e11e3b83b1ceeed8a3e6a73932c5..f100914017199d2bb83be493ffebb33984eb7f20 100644
--- a/src/rod3d.cc
+++ b/src/rod3d.cc
@@ -33,9 +33,9 @@
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
 
-#include <dune/gfe/cosseratrodenergy.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/cosseratrodenergy.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
diff --git a/src/simofoxshell.cc b/src/simofoxshell.cc
index 7285a45cc544a0c52b1ae1f354b61501ca7c39d2..8904851f5e940f3aeaca536f362038c5189b353e 100644
--- a/src/simofoxshell.cc
+++ b/src/simofoxshell.cc
@@ -21,18 +21,18 @@
 #include <dune/fufem/functiontools/boundarydofs.hh>
 #include <dune/fufem/dunepython.hh>
 
-#include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
-#include <dune/gfe/simofoxenergy.hh>
+#include <dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/simofoxenergy.hh>
 #include <dune/gfe/cosseratvtkwriter.hh>
 #include <dune/gfe/embeddedglobalgfefunction.hh>
-#include <dune/gfe/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
 #include <dune/gfe/mixedriemanniantrsolver.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/spaces/unitvector.hh>
 
 #if !MIXED_SPACE
-#include <dune/gfe/geodesicfeassemblerwrapper.hh>
+#include <dune/gfe/assemblers/geodesicfeassemblerwrapper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
 #include <dune/gfe/spaces/productmanifold.hh>
 #endif
diff --git a/test/adolctest-scalar-and-vector-mode.cc b/test/adolctest-scalar-and-vector-mode.cc
index a85a7b512f191d152354c93ad41f28140597fc12..a989ac634cb82c995c59efd6a1874c2fc7b4df32 100644
--- a/test/adolctest-scalar-and-vector-mode.cc
+++ b/test/adolctest-scalar-and-vector-mode.cc
@@ -22,11 +22,11 @@
 #include <dune/grid/utility/structuredgridfactory.hh>
 #include <dune/grid/uggrid.hh>
 
-#include <dune/gfe/cosseratenergystiffness.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/mixedgfeassembler.hh>
-#include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/cosseratenergystiffness.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh>
 
 #include <dune/istl/multitypeblockmatrix.hh>
 #include <dune/istl/multitypeblockvector.hh>
diff --git a/test/adolctest.cc b/test/adolctest.cc
index 34de35df9dbaf460b6347ab7bca58c184c01eb72..6529617f1e891d13fbf16640c364a68d274321c5 100644
--- a/test/adolctest.cc
+++ b/test/adolctest.cc
@@ -37,11 +37,11 @@ typedef double FDType;
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 
-#include <dune/gfe/localgeodesicfestiffness.hh>
+#include <dune/gfe/assemblers/localgeodesicfestiffness.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
-#include <dune/gfe/cosseratenergystiffness.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/localgeodesicfefdstiffness.hh>
+#include <dune/gfe/assemblers/cosseratenergystiffness.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/localgeodesicfefdstiffness.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
 // grid dimension
diff --git a/test/cosseratenergytest.cc b/test/cosseratenergytest.cc
index 65c7dc1dde8215115e999390f31c5f5ba8d74e65..85fc3b250219b4201affaa432d25e1f9ef3cc132 100644
--- a/test/cosseratenergytest.cc
+++ b/test/cosseratenergytest.cc
@@ -7,7 +7,7 @@
 
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 
-#include <dune/gfe/cosseratenergystiffness.hh>
+#include <dune/gfe/assemblers/cosseratenergystiffness.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include "multiindex.hh"
diff --git a/test/cosseratrodenergytest.cc b/test/cosseratrodenergytest.cc
index 9cd8339741cb42a72faa8f5228901695729334b0..1430f72da98ce00650badc1e586330ebc277069e 100644
--- a/test/cosseratrodenergytest.cc
+++ b/test/cosseratrodenergytest.cc
@@ -4,7 +4,7 @@
 
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 
-#include <dune/gfe/cosseratrodenergy.hh>
+#include <dune/gfe/assemblers/cosseratrodenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
diff --git a/test/cosseratrodtest.cc b/test/cosseratrodtest.cc
index 7c7ad4fc2e2817951b1e52f533b445c1ee31b1c9..72366414e83d84f0b9886936b5cf885e283f6e4c 100644
--- a/test/cosseratrodtest.cc
+++ b/test/cosseratrodtest.cc
@@ -16,9 +16,9 @@
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
 
-#include <dune/gfe/cosseratrodenergy.hh>
+#include <dune/gfe/assemblers/cosseratrodenergy.hh>
 #include <dune/gfe/geodesicfeassembler.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
diff --git a/test/geodesicfeassemblerwrappertest.cc b/test/geodesicfeassemblerwrappertest.cc
index 173a5d7c72df493b6b97e882c19cf035145a4d39..737e5d254d3b6218a7d898c8fc59e68e6f7fd189 100644
--- a/test/geodesicfeassemblerwrappertest.cc
+++ b/test/geodesicfeassemblerwrappertest.cc
@@ -22,16 +22,16 @@
 #include <dune/grid/utility/structuredgridfactory.hh>
 #include <dune/grid/uggrid.hh>
 
-#include <dune/gfe/cosseratenergystiffness.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
-#include <dune/gfe/harmonicenergy.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/cosseratenergystiffness.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/harmonicenergy.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/mixedgfeassembler.hh>
-#include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/mixedgfeassembler.hh>
+#include <dune/gfe/assemblers/mixedlocalgfeadolcstiffness.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 
-#include <dune/gfe/geodesicfeassemblerwrapper.hh>
+#include <dune/gfe/assemblers/geodesicfeassemblerwrapper.hh>
 
 #include <dune/istl/multitypeblockmatrix.hh>
 #include <dune/istl/multitypeblockvector.hh>
diff --git a/test/harmonicenergytest.cc b/test/harmonicenergytest.cc
index b66466f1686a6152b0a9bd919233649bd1e345cb..6ed8ca935256d4f17c012bf3b4f897159cda2a10 100644
--- a/test/harmonicenergytest.cc
+++ b/test/harmonicenergytest.cc
@@ -4,7 +4,7 @@
 
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 
-#include <dune/gfe/harmonicenergy.hh>
+#include <dune/gfe/assemblers/harmonicenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/spaces/unitvector.hh>
 
diff --git a/test/harmonicmaptest.cc b/test/harmonicmaptest.cc
index 0025d9f7c0508ec240c4f342e13824542b9f7764..bca635fd093aab05d6a5c7ff4517a90aa545db11 100644
--- a/test/harmonicmaptest.cc
+++ b/test/harmonicmaptest.cc
@@ -23,9 +23,9 @@
 
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/localgeodesicfeadolcstiffness.hh>
-#include <dune/gfe/harmonicenergy.hh>
-#include <dune/gfe/geodesicfeassembler.hh>
+#include <dune/gfe/assemblers/localgeodesicfeadolcstiffness.hh>
+#include <dune/gfe/assemblers/harmonicenergy.hh>
+#include <dune/gfe/assemblers/geodesicfeassembler.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 #include <dune/gfe/spaces/unitvector.hh>
 
diff --git a/test/nonplanarcosseratenergytest.cc b/test/nonplanarcosseratenergytest.cc
index 8756dd6213bfa69ba61fcf29a7fce0f302d9d481..17c3c3f9954a9981d728475965ea4cb5ff1ce0d6 100644
--- a/test/nonplanarcosseratenergytest.cc
+++ b/test/nonplanarcosseratenergytest.cc
@@ -12,7 +12,7 @@
 #include <dune/functions/functionspacebases/powerbasis.hh>
 
 #include <dune/gfe/cosseratvtkwriter.hh>
-#include <dune/gfe/nonplanarcosseratshellenergy.hh>
+#include <dune/gfe/assemblers/nonplanarcosseratshellenergy.hh>
 #include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include "multiindex.hh"
diff --git a/test/surfacecosseratstressassemblertest.cc b/test/surfacecosseratstressassemblertest.cc
index bf8e64a63ca4543115f4fa9bebc6ad7ab7c33ab8..e37521415d81ff8328db5160decbfb3a521c61cc 100644
--- a/test/surfacecosseratstressassemblertest.cc
+++ b/test/surfacecosseratstressassemblertest.cc
@@ -26,7 +26,7 @@
 #include <dune/grid/utility/structuredgridfactory.hh>
 
 #include <dune/gfe/filereader.hh>
-#include <dune/gfe/surfacecosseratstressassembler.hh>
+#include <dune/gfe/assemblers/surfacecosseratstressassembler.hh>
 #include <dune/gfe/spaces/rotation.hh>
 
 #include <dune/matrix-vector/transpose.hh>