diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5b2415ab3d875cff89b91c394c6f5517c6f40f09..26d0bd10d7839b5bb6a9321b82dc0d30a69770f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Master
 
+- All files that implement target spaces have been moved to the
+  `spaces` subdirectory.
+
 - The file `periodic1dpq1nodalbasis.hh` has been removed.  Use `periodicbasis.hh`
   from the `dune-functions` module in the future.
 
diff --git a/dune/gfe/CMakeLists.txt b/dune/gfe/CMakeLists.txt
index 0cb24b316392d5583f7624b81ebda0e1b2457bf7..52fdc576e01a196f19f7fedd39c3886d26dcc2c8 100644
--- a/dune/gfe/CMakeLists.txt
+++ b/dune/gfe/CMakeLists.txt
@@ -1,2 +1,4 @@
 #install headers
 install(FILES gfe.hh DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/gfe)
+
+add_subdirectory("spaces")
diff --git a/dune/gfe/cosseratenergystiffness.hh b/dune/gfe/cosseratenergystiffness.hh
index 1aca4d04ea179e7efe604f6bc2e942c13c58435c..4c1883eec10c516d649d0196687655226812e7ee 100644
--- a/dune/gfe/cosseratenergystiffness.hh
+++ b/dune/gfe/cosseratenergystiffness.hh
@@ -20,10 +20,10 @@
 #else
 #include "localgeodesicfefunction.hh"
 #endif
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/tensor3.hh>
-#include <dune/gfe/orthogonalmatrix.hh>
 #include <dune/gfe/cosseratstrain.hh>
+#include <dune/gfe/spaces/orthogonalmatrix.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #define DONT_USE_CURL
 
diff --git a/dune/gfe/cosseratrodenergy.hh b/dune/gfe/cosseratrodenergy.hh
index 3f91e06a7eb66357f056c44e5437a1d5a3fa7fc0..be436f1d5b06aac1d7dfe6595fb8822b031e00ed 100644
--- a/dune/gfe/cosseratrodenergy.hh
+++ b/dune/gfe/cosseratrodenergy.hh
@@ -17,7 +17,7 @@
 #include <dune/fufem/boundarypatch.hh>
 
 #include <dune/gfe/localenergy.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 namespace Dune::GFE {
 
diff --git a/dune/gfe/cosseratvtkreader.hh b/dune/gfe/cosseratvtkreader.hh
index f48d93f700f4e495264198bce0272dc167ac2d37..7e0e6109999849cf1fe6b2f1d5577efaa212b65b 100644
--- a/dune/gfe/cosseratvtkreader.hh
+++ b/dune/gfe/cosseratvtkreader.hh
@@ -1,7 +1,7 @@
 #ifndef DUNE_GFE_COSSERATVTKREADER_HH
 #define DUNE_GFE_COSSERATVTKREADER_HH
 
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 namespace Dune
 {
diff --git a/dune/gfe/cosseratvtkwriter.hh b/dune/gfe/cosseratvtkwriter.hh
index bf21d1648f0aaa8a24aa201a3171e86a30cbdcd2..84799c749c66bfea1231fec222e61d102f1bd0d6 100644
--- a/dune/gfe/cosseratvtkwriter.hh
+++ b/dune/gfe/cosseratvtkwriter.hh
@@ -10,8 +10,8 @@
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
 
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/vtkfile.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 
 /** \brief Write the configuration of a Cosserat material in VTK format */
diff --git a/dune/gfe/geodesicfeassemblerwrapper.hh b/dune/gfe/geodesicfeassemblerwrapper.hh
index 35918edb2db8c34854a8068a8e179470bdaa69c2..5b2ad650aec0074e562a9fec6cb1bdc866b388d2 100644
--- a/dune/gfe/geodesicfeassemblerwrapper.hh
+++ b/dune/gfe/geodesicfeassemblerwrapper.hh
@@ -3,8 +3,8 @@
 
 #include <dune/gfe/mixedgfeassembler.hh>
 #include <dune/common/tuplevector.hh>
-#include <dune/gfe/rigidbodymotion.hh>
-#include <dune/gfe/productmanifold.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 namespace Dune::GFE {
 
diff --git a/dune/gfe/localgeodesicfefunction.hh b/dune/gfe/localgeodesicfefunction.hh
index eb4cab23ad962cd83c373964c46eadc0178b79cd..8318f9d62dd7bed1834cfb9d4e57908c0127f8c0 100644
--- a/dune/gfe/localgeodesicfefunction.hh
+++ b/dune/gfe/localgeodesicfefunction.hh
@@ -10,7 +10,7 @@
 #include <dune/gfe/averagedistanceassembler.hh>
 #include <dune/gfe/targetspacertrsolver.hh>
 #include <dune/gfe/localquickanddirtyfefunction.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include <dune/gfe/tensor3.hh>
 #include <dune/gfe/tensorssd.hh>
diff --git a/dune/gfe/localintegralenergy.hh b/dune/gfe/localintegralenergy.hh
index 7e3e7b4ebe114e7397807ffa89813956ceda711b..30cbd6ee80c72b6ed4c66f1e758deb6d5a8b76d7 100644
--- a/dune/gfe/localintegralenergy.hh
+++ b/dune/gfe/localintegralenergy.hh
@@ -7,8 +7,8 @@
 #include <dune/geometry/quadraturerules.hh>
 
 #include <dune/gfe/localenergy.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include <dune/elasticity/materials/localdensity.hh>
 
diff --git a/dune/gfe/localprojectedfefunction.hh b/dune/gfe/localprojectedfefunction.hh
index 46c4a686972f3741ea96be9d79c969f31da3bfc2..7551fbb9fa16bf9cbc90a4622c6406058df7044a 100644
--- a/dune/gfe/localprojectedfefunction.hh
+++ b/dune/gfe/localprojectedfefunction.hh
@@ -8,11 +8,11 @@
 
 #include <dune/geometry/type.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/linearalgebra.hh>
 #include <dune/gfe/polardecomposition.hh>
-#include <dune/gfe/realtuple.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 namespace Dune {
 
diff --git a/dune/gfe/localquickanddirtyfefunction.hh b/dune/gfe/localquickanddirtyfefunction.hh
index 2679b11012dd6107601cd490fb6853e962b25950..346031328542ba0f639f86a5838a68e539fa7bc0 100644
--- a/dune/gfe/localquickanddirtyfefunction.hh
+++ b/dune/gfe/localquickanddirtyfefunction.hh
@@ -7,8 +7,8 @@
 
 #include <dune/geometry/type.hh>
 
-#include <dune/gfe/rotation.hh>
 #include <dune/gfe/linearalgebra.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 namespace Dune {
 
diff --git a/dune/gfe/nonplanarcosseratshellenergy.hh b/dune/gfe/nonplanarcosseratshellenergy.hh
index b926f0748e83b63dc8b75969dba21305b0b2a387..33bd23c8d4b7ef8c468d493e26de3905eaebd297 100644
--- a/dune/gfe/nonplanarcosseratshellenergy.hh
+++ b/dune/gfe/nonplanarcosseratshellenergy.hh
@@ -18,11 +18,11 @@
 #include <dune/gfe/cosseratenergystiffness.hh>
 #include <dune/gfe/localenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
-#include <dune/gfe/rigidbodymotion.hh>
-#include <dune/gfe/unitvector.hh>
 #include <dune/gfe/tensor3.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/mixedlocalgfeadolcstiffness.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 #if HAVE_DUNE_CURVEDGEOMETRY
 #include <dune/curvedgeometry/curvedgeometry.hh>
diff --git a/dune/gfe/polardecomposition.hh b/dune/gfe/polardecomposition.hh
index cc6944d823fcb1588a543ad044edc612e9db614f..5b73a5cd68baa0ac613eefc66d3dc26584832757 100644
--- a/dune/gfe/polardecomposition.hh
+++ b/dune/gfe/polardecomposition.hh
@@ -6,8 +6,8 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/common/version.hh>
 #include <dune/common/exceptions.hh>
-#include <dune/gfe/rotation.hh>
 #include <dune/gfe/linearalgebra.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 ///////////////////////////////////////////////////////////////////////////////////////////
 //  Two Methods to compute the Polar Factor of a 3x3 matrix
diff --git a/dune/gfe/simofoxenergy.hh b/dune/gfe/simofoxenergy.hh
index 853a5fe677c6b26ffb7eab58d65f1659dbf7ddf3..33f533ca165377c2098d60fdebfd5a7f86bf3f9d 100644
--- a/dune/gfe/simofoxenergy.hh
+++ b/dune/gfe/simofoxenergy.hh
@@ -12,8 +12,8 @@
 #include <dune/gfe/linearalgebra.hh>
 #include <dune/gfe/localenergy.hh>
 #include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/unitvector.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 namespace Dune::GFE {
 
diff --git a/dune/gfe/spaces/CMakeLists.txt b/dune/gfe/spaces/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f158d6058cc5376c7eafc6889e595d9595678227
--- /dev/null
+++ b/dune/gfe/spaces/CMakeLists.txt
@@ -0,0 +1,11 @@
+#install headers
+install(FILES
+        hyperbolichalfspacepoint.hh
+        orthogonalmatrix.hh
+        productmanifold.hh
+        quaternion.hh
+        realtuple.hh
+        rigidbodymotion.hh
+        rotation.hh
+        unitvector.hh
+        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dune/gfe/spaces)
diff --git a/dune/gfe/hyperbolichalfspacepoint.hh b/dune/gfe/spaces/hyperbolichalfspacepoint.hh
similarity index 99%
rename from dune/gfe/hyperbolichalfspacepoint.hh
rename to dune/gfe/spaces/hyperbolichalfspacepoint.hh
index a8a803d4dc484d46cd8bcab1123f5297ae530360..2a8f6b20cbe8974499f799b96794315059ebc435 100644
--- a/dune/gfe/hyperbolichalfspacepoint.hh
+++ b/dune/gfe/spaces/hyperbolichalfspacepoint.hh
@@ -1,5 +1,5 @@
-#ifndef HYPERBOLIC_HALF_SPACE_POINT_HH
-#define HYPERBOLIC_HALF_SPACE_POINT_HH
+#ifndef DUNE_GFE_SPACES_HYPERBOLICHALFSPACEPOINT_HH
+#define DUNE_GFE_SPACES_HYPERBOLICHALFSPACEPOINT_HH
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
diff --git a/dune/gfe/orthogonalmatrix.hh b/dune/gfe/spaces/orthogonalmatrix.hh
similarity index 97%
rename from dune/gfe/orthogonalmatrix.hh
rename to dune/gfe/spaces/orthogonalmatrix.hh
index 36d7c10bce5154a09f2b12f2d56f44521db09eac..d87effc517fddad338edf30fda8c8bc0b4835541 100644
--- a/dune/gfe/orthogonalmatrix.hh
+++ b/dune/gfe/spaces/orthogonalmatrix.hh
@@ -1,5 +1,5 @@
-#ifndef ORTHOGONAL_MATRIX_HH
-#define ORTHOGONAL_MATRIX_HH
+#ifndef DUNE_GFE_SPACES_ORTHOGONALMATRIX_HH
+#define DUNE_GFE_SPACES_ORTHOGONALMATRIX_HH
 
 #include <dune/common/fmatrix.hh>
 
@@ -177,4 +177,4 @@ private:
     
 };
 
-#endif // ORTHOGONAL_MATRIX_HH
+#endif  // DUNE_GFE_SPACES_ORTHOGONALMATRIX_HH
diff --git a/dune/gfe/productmanifold.hh b/dune/gfe/spaces/productmanifold.hh
similarity index 99%
rename from dune/gfe/productmanifold.hh
rename to dune/gfe/spaces/productmanifold.hh
index c22f35d08d172859f18688c05d0cbc95bd603585..afc37cf9928933ef3c8dedfcc22a4c1a1b987ebd 100644
--- a/dune/gfe/productmanifold.hh
+++ b/dune/gfe/spaces/productmanifold.hh
@@ -1,5 +1,5 @@
-#ifndef DUNE_GFE_PRODUCTMANIFOLD_HH
-#define DUNE_GFE_PRODUCTMANIFOLD_HH
+#ifndef DUNE_GFE_SPACES_PRODUCTMANIFOLD_HH
+#define DUNE_GFE_SPACES_PRODUCTMANIFOLD_HH
 
 #include <iostream>
 #include <tuple>
diff --git a/dune/gfe/quaternion.hh b/dune/gfe/spaces/quaternion.hh
similarity index 98%
rename from dune/gfe/quaternion.hh
rename to dune/gfe/spaces/quaternion.hh
index e88ee526b91c423ecf7524dfcb1ba4a80c6663cd..3ac4ab1bb1c55ac38de7bab7c146da336736a2ed 100644
--- a/dune/gfe/quaternion.hh
+++ b/dune/gfe/spaces/quaternion.hh
@@ -1,5 +1,5 @@
-#ifndef QUATERNION_HH
-#define QUATERNION_HH
+#ifndef DUNE_GFE_SPACES_QUATERNION_HH
+#define DUNE_GFE_SPACES_QUATERNION_HH
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
diff --git a/dune/gfe/realtuple.hh b/dune/gfe/spaces/realtuple.hh
similarity index 99%
rename from dune/gfe/realtuple.hh
rename to dune/gfe/spaces/realtuple.hh
index 1fdba4164f7b021b23bd3b5ea2d5e454a706c859..1a3f3d078bb3200b57cb8763e176d817c58c920d 100644
--- a/dune/gfe/realtuple.hh
+++ b/dune/gfe/spaces/realtuple.hh
@@ -1,5 +1,5 @@
-#ifndef REAL_TUPLE_HH
-#define REAL_TUPLE_HH
+#ifndef DUNE_GFE_SPACES_REALTUPLE_HH
+#define DUNE_GFE_SPACES_REALTUPLE_HH
 
 #include <dune/common/fvector.hh>
 
diff --git a/dune/gfe/rigidbodymotion.hh b/dune/gfe/spaces/rigidbodymotion.hh
similarity index 98%
rename from dune/gfe/rigidbodymotion.hh
rename to dune/gfe/spaces/rigidbodymotion.hh
index b77a6bc8880b6843acc2cdd95def0be272c1bf17..c82c26882624fa8e6129474cd7cc1e57393f66fc 100644
--- a/dune/gfe/rigidbodymotion.hh
+++ b/dune/gfe/spaces/rigidbodymotion.hh
@@ -1,10 +1,10 @@
-#ifndef RIGID_BODY_MOTION_HH
-#define RIGID_BODY_MOTION_HH
+#ifndef DUNE_GFE_SPACES_RIGIDBODYMOTION_HH
+#define DUNE_GFE_SPACES_RIGIDBODYMOTION_HH
 
 #include <dune/common/fvector.hh>
 
-#include <dune/gfe/realtuple.hh>
-#include "rotation.hh"
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 /** \brief A rigid-body motion in R^N, i.e., a member of SE(N) */
 template <class T, int N>
diff --git a/dune/gfe/rotation.hh b/dune/gfe/spaces/rotation.hh
similarity index 99%
rename from dune/gfe/rotation.hh
rename to dune/gfe/spaces/rotation.hh
index 8589fcc4730410ba1aa1068eaa72d6d7292836fc..6217e04639b7b79a4fb9c41002784ed5ca0a3cdd 100644
--- a/dune/gfe/rotation.hh
+++ b/dune/gfe/spaces/rotation.hh
@@ -1,5 +1,5 @@
-#ifndef ROTATION_HH
-#define ROTATION_HH
+#ifndef DUNE_GFE_SPACES_ROTATION_HH
+#define DUNE_GFE_SPACES_ROTATION_HH
 
 /** \file
     \brief Define rotations in Euclidean spaces
@@ -12,11 +12,11 @@
 #include <dune/common/exceptions.hh>
 #include <dune/common/math.hh>
 
-#include "quaternion.hh"
 #include <dune/gfe/tensor3.hh>
-#include <dune/gfe/unitvector.hh>
 #include <dune/gfe/skewmatrix.hh>
 #include <dune/gfe/symmetricmatrix.hh>
+#include <dune/gfe/spaces/quaternion.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 template <class T, int dim>
 class Rotation
diff --git a/dune/gfe/unitvector.hh b/dune/gfe/spaces/unitvector.hh
similarity index 99%
rename from dune/gfe/unitvector.hh
rename to dune/gfe/spaces/unitvector.hh
index 3d1eb4c5ad26d9089b0f7d75f3656c7049a8358f..d3d19dd3d06d4a63be3905056c6a08ce202f6009 100644
--- a/dune/gfe/unitvector.hh
+++ b/dune/gfe/spaces/unitvector.hh
@@ -1,5 +1,5 @@
-#ifndef UNIT_VECTOR_HH
-#define UNIT_VECTOR_HH
+#ifndef DUNE_GFE_SPACES_UNITVECTOR_HH
+#define DUNE_GFE_SPACES_UNITVECTOR_HH
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
diff --git a/dune/gfe/surfacecosseratenergy.hh b/dune/gfe/surfacecosseratenergy.hh
index 4fad540f5add25490d1a8086da66ec69b1bca01c..2174df54eb20d91558e4fcbc7e5a955f5f4b174d 100644
--- a/dune/gfe/surfacecosseratenergy.hh
+++ b/dune/gfe/surfacecosseratenergy.hh
@@ -12,9 +12,8 @@
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/mixedlocalgeodesicfestiffness.hh>
-#include <dune/gfe/orthogonalmatrix.hh>
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/tensor3.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include <dune/curvedgeometry/curvedgeometry.hh>
 #include <dune/localfunctions/lagrange/lfecache.hh>
diff --git a/dune/gfe/surfacecosseratstressassembler.hh b/dune/gfe/surfacecosseratstressassembler.hh
index a939256d561a3b95344d95679aae453e2e65f582..5c4f6da332dd92dd1bb2f5ab9aedd04df38c6765 100644
--- a/dune/gfe/surfacecosseratstressassembler.hh
+++ b/dune/gfe/surfacecosseratstressassembler.hh
@@ -4,8 +4,8 @@
 #include <dune/fufem/boundarypatch.hh>
 
 #include <dune/gfe/linearalgebra.hh>
-#include <dune/gfe/rotation.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 #include <dune/matrix-vector/transpose.hh>
 
diff --git a/src/compute-disc-error.cc b/src/compute-disc-error.cc
index c9859b270851d790f644218bcd6569b46de95960..ae1a330011d3d63c59fbf6bea66833e5512071e7 100644
--- a/src/compute-disc-error.cc
+++ b/src/compute-disc-error.cc
@@ -24,12 +24,12 @@
 #include <dune/fufem/dunepython.hh>
 #include <dune/fufem/makesphere.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/realtuple.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/embeddedglobalgfefunction.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 // grid dimension
 const int dim = 2;
diff --git a/src/cosserat-continuum.cc b/src/cosserat-continuum.cc
index eef6a5a8319e119c693b829966b394299811e44d..0efd6fce2f2b5d8ca9e41282d5175877d0f8f1b3 100644
--- a/src/cosserat-continuum.cc
+++ b/src/cosserat-continuum.cc
@@ -70,7 +70,7 @@
 #include <dune/gfe/geodesicfeassemblerwrapper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 #endif
 
 #if HAVE_DUNE_VTK
diff --git a/src/film-on-substrate-stress-plot.cc b/src/film-on-substrate-stress-plot.cc
index fce87fe3ba5084882fedce20ed00468ff4fd7e98..388828b6746e27c89ca952f3f55cf7567e7a4207 100644
--- a/src/film-on-substrate-stress-plot.cc
+++ b/src/film-on-substrate-stress-plot.cc
@@ -34,8 +34,8 @@
 #include <dune/grid/io/file/vtk.hh>
 
 #include <dune/gfe/filereader.hh>
-#include <dune/gfe/rotation.hh>
 #include <dune/gfe/surfacecosseratstressassembler.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 // grid dimension
 #ifndef WORLD_DIM
diff --git a/src/film-on-substrate.cc b/src/film-on-substrate.cc
index b15612c2d60e397854f3d5f4efa6e34f39687f94..fda9a0cbbf014b0711ffd71f6485bbe8d351b1b4 100644
--- a/src/film-on-substrate.cc
+++ b/src/film-on-substrate.cc
@@ -69,7 +69,7 @@
 #include <dune/gfe/geodesicfeassemblerwrapper.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 #endif
 
 #include <dune/istl/multitypeblockvector.hh>
diff --git a/src/gradient-flow.cc b/src/gradient-flow.cc
index 5c87533cbec555a4b2c656538c8d1647be100158..bb8dc917b47bb781a2ac9be2bbf5f2f8171a8299 100644
--- a/src/gradient-flow.cc
+++ b/src/gradient-flow.cc
@@ -34,7 +34,6 @@
 #include <dune/solvers/solvers/iterativesolver.hh>
 #include <dune/solvers/norms/energynorm.hh>
 
-#include <dune/gfe/unitvector.hh>
 #include <dune/gfe/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/geodesicfeassembler.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
@@ -43,6 +42,7 @@
 #include <dune/gfe/harmonicenergy.hh>
 #include <dune/gfe/l2distancesquaredenergy.hh>
 #include <dune/gfe/weightedsumenergy.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 // grid dimension
 const int dim = 1;
diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index a5f0c3a442a92968c95230047466101215005ce1..cf9c5243d37f1aba5120ffc4f173413c72b49c5d 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -38,10 +38,6 @@
 #include <dune/solvers/solvers/iterativesolver.hh>
 #include <dune/solvers/norms/energynorm.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
 #include <dune/gfe/localgeodesicfeadolcstiffness.hh>
@@ -50,6 +46,10 @@
 #include <dune/gfe/geodesicfeassembler.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
 #include <dune/gfe/embeddedglobalgfefunction.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 // grid dimension
 const int dim = 2;
diff --git a/src/rod3d.cc b/src/rod3d.cc
index 53a44f8a897db4ec3476e2029275d233bb7f5238..63112aa1ca74e11e3b83b1ceeed8a3e6a73932c5 100644
--- a/src/rod3d.cc
+++ b/src/rod3d.cc
@@ -38,8 +38,8 @@
 #include <dune/gfe/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 typedef RigidBodyMotion<double,3> TargetSpace;
 
diff --git a/src/simofoxshell.cc b/src/simofoxshell.cc
index fee050e214a1f3ee476ff1678bad960a58ad2c1f..7285a45cc544a0c52b1ae1f354b61501ca7c39d2 100644
--- a/src/simofoxshell.cc
+++ b/src/simofoxshell.cc
@@ -27,14 +27,14 @@
 #include <dune/gfe/embeddedglobalgfefunction.hh>
 #include <dune/gfe/mixedgfeassembler.hh>
 #include <dune/gfe/mixedriemanniantrsolver.hh>
-#include <dune/gfe/unitvector.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/productmanifold.hh>
 #include <dune/gfe/riemannianpnsolver.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
 #endif
 
 #if HAVE_DUNE_VTK
diff --git a/test/adolctest.cc b/test/adolctest.cc
index 9a408d0441756b551aef2b1fd5c27b8e47ce9912..34de35df9dbaf460b6347ab7bca58c184c01eb72 100644
--- a/test/adolctest.cc
+++ b/test/adolctest.cc
@@ -37,12 +37,12 @@ typedef double FDType;
 #include <dune/functions/functionspacebases/interpolate.hh>
 #include <dune/functions/functionspacebases/powerbasis.hh>
 
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/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/spaces/rigidbodymotion.hh>
 
 // grid dimension
 const int dim = 2;
diff --git a/test/averagedistanceassemblertest.cc b/test/averagedistanceassemblertest.cc
index 03f97eac08b6ed3f0d99d94295ff3feb636123ea..c106a08a11e5f41ff4e0073b7cd5cd1fba70527b 100644
--- a/test/averagedistanceassemblertest.cc
+++ b/test/averagedistanceassemblertest.cc
@@ -6,10 +6,10 @@
 #include <dune/geometry/quadraturerules.hh>
 #include <dune/geometry/type.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/productmanifold.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 #include <dune/gfe/localgeodesicfefunction.hh>
 
diff --git a/test/cosseratenergytest.cc b/test/cosseratenergytest.cc
index 1d41eff2f9fddc017348dc3b04261745ab9faa4f..65c7dc1dde8215115e999390f31c5f5ba8d74e65 100644
--- a/test/cosseratenergytest.cc
+++ b/test/cosseratenergytest.cc
@@ -7,8 +7,8 @@
 
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/cosseratenergystiffness.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include "multiindex.hh"
 #include "valuefactory.hh"
diff --git a/test/cosseratrodenergytest.cc b/test/cosseratrodenergytest.cc
index 6a485ac5704538ca516071b8111c21702b149d0d..9cd8339741cb42a72faa8f5228901695729334b0 100644
--- a/test/cosseratrodenergytest.cc
+++ b/test/cosseratrodenergytest.cc
@@ -6,7 +6,7 @@
 
 #include <dune/gfe/cosseratrodenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 
 using namespace Dune;
diff --git a/test/cosseratrodtest.cc b/test/cosseratrodtest.cc
index b3309e9d8094254cce194de799bedf47c31fc58a..7c7ad4fc2e2817951b1e52f533b445c1ee31b1c9 100644
--- a/test/cosseratrodtest.cc
+++ b/test/cosseratrodtest.cc
@@ -21,8 +21,8 @@
 #include <dune/gfe/localgeodesicfeadolcstiffness.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/rigidbodymotion.hh>
 #include <dune/gfe/riemanniantrsolver.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 typedef RigidBodyMotion<double,3> TargetSpace;
 
diff --git a/test/embeddedglobalgfefunctiontest.cc b/test/embeddedglobalgfefunctiontest.cc
index ca9be8349b0879e38975e443a14ec7dfa78ba2d2..7691842e61b9f2eb47e23ad41902340025e42a56 100644
--- a/test/embeddedglobalgfefunctiontest.cc
+++ b/test/embeddedglobalgfefunctiontest.cc
@@ -11,7 +11,7 @@
 #include <dune/gfe/embeddedglobalgfefunction.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localprojectedfefunction.hh>
-#include <dune/gfe/unitvector.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 using namespace Dune;
 
diff --git a/test/harmonicenergytest.cc b/test/harmonicenergytest.cc
index 632fe3df7416d0a60385503c12ce72e36e4f73dd..b66466f1686a6152b0a9bd919233649bd1e345cb 100644
--- a/test/harmonicenergytest.cc
+++ b/test/harmonicenergytest.cc
@@ -4,9 +4,9 @@
 
 #include <dune/functions/functionspacebases/lagrangebasis.hh>
 
-#include <dune/gfe/unitvector.hh>
 #include <dune/gfe/harmonicenergy.hh>
 #include <dune/gfe/localgeodesicfefunction.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 #include "multiindex.hh"
 #include "valuefactory.hh"
diff --git a/test/harmonicmaptest.cc b/test/harmonicmaptest.cc
index 112827201b4c7de4753da22a94c40df5ed8505bc..0025d9f7c0508ec240c4f342e13824542b9f7764 100644
--- a/test/harmonicmaptest.cc
+++ b/test/harmonicmaptest.cc
@@ -21,13 +21,13 @@
 #include <dune/fufem/boundarypatch.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
 
-#include <dune/gfe/unitvector.hh>
 #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/riemanniantrsolver.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 // grid dimension
 const int dim = 2;
diff --git a/test/localgeodesicfefunctiontest.cc b/test/localgeodesicfefunctiontest.cc
index 613fbda902bda20a398d7e7b313e40990108f89a..fb421102223ed626ce9b391f9ef29ba31b1ff45a 100644
--- a/test/localgeodesicfefunctiontest.cc
+++ b/test/localgeodesicfefunctiontest.cc
@@ -11,10 +11,10 @@
 
 #include <dune/localfunctions/lagrange/pqkfactory.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/productmanifold.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include "multiindex.hh"
diff --git a/test/localgfetestfunctiontest.cc b/test/localgfetestfunctiontest.cc
index a57aa3f14ad0652a78a85524dfae9c4afeb301ae..3eae54466c108dccb2b6c664de7a61957d2fa750 100644
--- a/test/localgfetestfunctiontest.cc
+++ b/test/localgfetestfunctiontest.cc
@@ -7,10 +7,10 @@
 #include <dune/common/fvector.hh>
 #include <dune/localfunctions/lagrange/pqkfactory.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/productmanifold.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 #include <dune/gfe/localgeodesicfefunction.hh>
 #include <dune/gfe/localgfetestfunctionbasis.hh>
diff --git a/test/localprojectedfefunctiontest.cc b/test/localprojectedfefunctiontest.cc
index 2ca8e555f399c6be98e5c80a58af03e15615208b..e94720f0ed6e50e9bf4fd6c6f89f0b50ac0fd68d 100644
--- a/test/localprojectedfefunctiontest.cc
+++ b/test/localprojectedfefunctiontest.cc
@@ -12,10 +12,10 @@
 
 #include <dune/localfunctions/lagrange/pqkfactory.hh>
 
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/productmanifold.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 #include <dune/gfe/localprojectedfefunction.hh>
 #include "multiindex.hh"
diff --git a/test/nonplanarcosseratenergytest.cc b/test/nonplanarcosseratenergytest.cc
index 20f181f72157b1fe13647acb54a72c9ea4b8f272..8756dd6213bfa69ba61fcf29a7fce0f302d9d481 100644
--- a/test/nonplanarcosseratenergytest.cc
+++ b/test/nonplanarcosseratenergytest.cc
@@ -13,7 +13,7 @@
 
 #include <dune/gfe/cosseratvtkwriter.hh>
 #include <dune/gfe/nonplanarcosseratshellenergy.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include "multiindex.hh"
 #include "valuefactory.hh"
diff --git a/test/orthogonalmatrixtest.cc b/test/orthogonalmatrixtest.cc
index 27990a643b73a2549d9e31a62585d1456fc6b141..31f13e675ec3c8b70df5a66a9f32b9446c52e5ab 100644
--- a/test/orthogonalmatrixtest.cc
+++ b/test/orthogonalmatrixtest.cc
@@ -1,6 +1,6 @@
 #include <config.h>
 
-#include <dune/gfe/orthogonalmatrix.hh>
+#include <dune/gfe/spaces/orthogonalmatrix.hh>
 
 #include "valuefactory.hh"
 
diff --git a/test/polardecompositiontest.cc b/test/polardecompositiontest.cc
index b7f67cef09c575eafd632d87d1b04fa11f5dd923..b4c87f6a271aaa45a4b48c3a19718ddd7f5d33e2 100644
--- a/test/polardecompositiontest.cc
+++ b/test/polardecompositiontest.cc
@@ -3,7 +3,7 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/common/fvector.hh>
 #include <dune/gfe/polardecomposition.hh>
-#include <dune/gfe/rotation.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 #include <chrono>
 #include <fstream>
diff --git a/test/rigidbodymotiontest.cc b/test/rigidbodymotiontest.cc
index 2f39109d96ecc25b3553a176e2334d320b97948c..7aa8020aec114761059b0ee44a44182b6c9cb52b 100644
--- a/test/rigidbodymotiontest.cc
+++ b/test/rigidbodymotiontest.cc
@@ -8,7 +8,7 @@
 #include <dune/localfunctions/lagrange/pqkfactory.hh>
 
 #include <dune/gfe/localgeodesicfefunction.hh>
-#include <dune/gfe/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
 
 #include "multiindex.hh"
 #include "valuefactory.hh"
diff --git a/test/rotationtest.cc b/test/rotationtest.cc
index 36e8b8d3bc21b0a5c2e0dc566053f5018580b6d5..aa67c616d86500091475e39a52d9cc1635282a58 100644
--- a/test/rotationtest.cc
+++ b/test/rotationtest.cc
@@ -5,7 +5,7 @@
 
 #include <dune/common/fmatrix.hh>
 
-#include <dune/gfe/rotation.hh>
+#include <dune/gfe/spaces/rotation.hh>
 #include "valuefactory.hh"
 
 using namespace Dune;
diff --git a/test/surfacecosseratstressassemblertest.cc b/test/surfacecosseratstressassemblertest.cc
index f44ff0976fb2969a36e53abb3b3a8dabac0fda6d..bf8e64a63ca4543115f4fa9bebc6ad7ab7c33ab8 100644
--- a/test/surfacecosseratstressassemblertest.cc
+++ b/test/surfacecosseratstressassemblertest.cc
@@ -26,8 +26,8 @@
 #include <dune/grid/utility/structuredgridfactory.hh>
 
 #include <dune/gfe/filereader.hh>
-#include <dune/gfe/rotation.hh>
 #include <dune/gfe/surfacecosseratstressassembler.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 #include <dune/matrix-vector/transpose.hh>
 
diff --git a/test/targetspacetest.cc b/test/targetspacetest.cc
index 765a46c9ba38b9df6d2b45111fb3db9fc4e52fea..81819cc3fcf46dd5bc17f9045b0751f1dd19db15 100644
--- a/test/targetspacetest.cc
+++ b/test/targetspacetest.cc
@@ -1,10 +1,10 @@
 #include <config.h>
 
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/realtuple.hh>
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/productmanifold.hh>
-#include <dune/gfe/hyperbolichalfspacepoint.hh>
+#include <dune/gfe/spaces/hyperbolichalfspacepoint.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/unitvector.hh>
+#include <dune/gfe/spaces/realtuple.hh>
+#include <dune/gfe/spaces/rotation.hh>
 
 #include "valuefactory.hh"
 
diff --git a/test/valuefactory.hh b/test/valuefactory.hh
index 9d23579177b486e56e17bb168efda579c454c7bf..03f3f0aff2e5db429e11a616024f700d8ed15686 100644
--- a/test/valuefactory.hh
+++ b/test/valuefactory.hh
@@ -3,12 +3,12 @@
 
 #include <vector>
 
-#include <dune/gfe/unitvector.hh>
-#include <dune/gfe/rotation.hh>
-#include <dune/gfe/rigidbodymotion.hh>
-#include <dune/gfe/productmanifold.hh>
-#include <dune/gfe/orthogonalmatrix.hh>
-#include <dune/gfe/hyperbolichalfspacepoint.hh>
+#include <dune/gfe/spaces/hyperbolichalfspacepoint.hh>
+#include <dune/gfe/spaces/orthogonalmatrix.hh>
+#include <dune/gfe/spaces/productmanifold.hh>
+#include <dune/gfe/spaces/rigidbodymotion.hh>
+#include <dune/gfe/spaces/rotation.hh>
+#include <dune/gfe/spaces/unitvector.hh>
 
 /** \brief A class that creates sets of values of various types, to be used in unit tests
  *
@@ -355,4 +355,4 @@ public:
 };
 
 
-#endif
\ No newline at end of file
+#endif