diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index ff2760559e1de5b53ae12a5399905993e74c9dc1..5ff08fd5d5dc04fea7fd299dfd70d5fffc79b563 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -84,52 +84,11 @@
 #include "enum_scheme.cc"
 #include "enum_verbosity.cc"
 
+#include "state.hh"
 #include "timestepping.hh"
 
-#include "state/stateupdater.hh"
-#include "state/ruinastateupdater.hh"
-#include "state/dieterichstateupdater.hh"
-
 size_t const dims = DIM;
 
-template <class Vector, class Matrix, class Function, int dimension>
-std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dimension>>
-initTimeStepper(Config::scheme scheme,
-                Function const &velocityDirichletFunction,
-                Dune::BitSetVector<dimension> const &velocityDirichletNodes,
-                Matrix const &massMatrix, Matrix const &stiffnessMatrix,
-                Matrix const &dampingMatrix, Vector const &u_initial,
-                Vector const &v_initial, Vector const &a_initial) {
-  switch (scheme) {
-    case Config::Newmark:
-      return std::make_shared<Newmark<Vector, Matrix, Function, dims>>(
-          stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial,
-          a_initial, velocityDirichletNodes, velocityDirichletFunction);
-    case Config::BackwardEuler:
-      return std::make_shared<BackwardEuler<Vector, Matrix, Function, dims>>(
-          stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial,
-          velocityDirichletNodes, velocityDirichletFunction);
-    default:
-      assert(false);
-  }
-}
-
-template <class ScalarVector, class Vector>
-std::shared_ptr<StateUpdater<ScalarVector, Vector>> initStateUpdater(
-    Config::stateModel model, ScalarVector const &alpha_initial,
-    Dune::BitSetVector<1> const &frictionalNodes, FrictionData const &fd) {
-  switch (model) {
-    case Config::Dieterich:
-      return std::make_shared<DieterichStateUpdater<ScalarVector, Vector>>(
-          alpha_initial, frictionalNodes, fd.L);
-    case Config::Ruina:
-      return std::make_shared<RuinaStateUpdater<ScalarVector, Vector>>(
-          alpha_initial, frictionalNodes, fd.L);
-    default:
-      assert(false);
-  }
-}
-
 void initPython() {
   Python::start();
 
diff --git a/src/state.hh b/src/state.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e1d840201fd226fbf8c01caaf3c88572c2f2c139
--- /dev/null
+++ b/src/state.hh
@@ -0,0 +1,26 @@
+#ifndef DUNE_TECTONIC_STATE_HH
+#define DUNE_TECTONIC_STATE_HH
+
+#include <dune/common/bitsetvector.hh>
+
+#include "enums.hh"
+#include "state/stateupdater.hh"
+#include "state/ruinastateupdater.hh"
+#include "state/dieterichstateupdater.hh"
+
+template <class ScalarVector, class Vector>
+std::shared_ptr<StateUpdater<ScalarVector, Vector>> initStateUpdater(
+    Config::stateModel model, ScalarVector const &alpha_initial,
+    Dune::BitSetVector<1> const &frictionalNodes, FrictionData const &fd) {
+  switch (model) {
+    case Config::Dieterich:
+      return std::make_shared<DieterichStateUpdater<ScalarVector, Vector>>(
+          alpha_initial, frictionalNodes, fd.L);
+    case Config::Ruina:
+      return std::make_shared<RuinaStateUpdater<ScalarVector, Vector>>(
+          alpha_initial, frictionalNodes, fd.L);
+    default:
+      assert(false);
+  }
+}
+#endif
diff --git a/src/timestepping.hh b/src/timestepping.hh
index adb2ac5b5c02437df01261a65413c5c53414f363..fe88bcc0956b3d6f5cc6f3af52e1011a5bc5198d 100644
--- a/src/timestepping.hh
+++ b/src/timestepping.hh
@@ -1,6 +1,7 @@
 #ifndef DUNE_TECTONIC_TIMESTEPPING_HH
 #define DUNE_TECTONIC_TIMESTEPPING_HH
 
+#include "enums.hh"
 #include <dune/common/bitsetvector.hh>
 
 template <class Vector, class Matrix, class Function, size_t dim>
@@ -18,4 +19,27 @@ class TimeSteppingScheme {
 #include "timestepping/newmark.hh"
 #include "timestepping/backward_euler.hh"
 
+template <class Vector, class Matrix, class Function, int dimension>
+std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dimension>>
+initTimeStepper(Config::scheme scheme,
+                Function const &velocityDirichletFunction,
+                Dune::BitSetVector<dimension> const &velocityDirichletNodes,
+                Matrix const &massMatrix, Matrix const &stiffnessMatrix,
+                Matrix const &dampingMatrix, Vector const &u_initial,
+                Vector const &v_initial, Vector const &a_initial) {
+  switch (scheme) {
+    case Config::Newmark:
+      return std::make_shared<Newmark<Vector, Matrix, Function, dimension>>(
+          stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial,
+          a_initial, velocityDirichletNodes, velocityDirichletFunction);
+    case Config::BackwardEuler:
+      return std::make_shared<
+          BackwardEuler<Vector, Matrix, Function, dimension>>(
+          stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial,
+          velocityDirichletNodes, velocityDirichletFunction);
+    default:
+      assert(false);
+  }
+}
+
 #endif