diff --git a/src/strikeslip/strikeslip-2D.cfg b/src/strikeslip/strikeslip-2D.cfg
index 9fd7ce5c6f1c8915dbae29bd1404000179d0d73c..7fe09f4ea21bb07ef87c3d568fcfaf4b6ba74be6 100644
--- a/src/strikeslip/strikeslip-2D.cfg
+++ b/src/strikeslip/strikeslip-2D.cfg
@@ -1,12 +1,12 @@
 # -*- mode:conf -*-
 [body0]
-smallestDiameter = 0.02 # 2e-3 [m]
+smallestDiameter = 1e-2 # 2e-3 [m]
 
 [body1]
-smallestDiameter = 0.02  # 2e-3 [m]
+smallestDiameter = 1e-2  # 2e-3 [m]
 
 [timeSteps]
-refinementTolerance = 1e-3# 1e-5
+refinementTolerance = 1e-5 # 1e-5
 
 [u0.solver]
 tolerance         = 1e-8
@@ -18,7 +18,7 @@ tolerance         = 1e-8
 tolerance         = 1e-8
 
 [v.fpi]
-tolerance         = 1e-3    # 1e-5
+tolerance         = 1e-9    # 1e-5
 
 [solver.tnnmg.preconditioner.basesolver]
 tolerance          = 1e-10
diff --git a/src/strikeslip/strikeslip.cc b/src/strikeslip/strikeslip.cc
index 44f09f40c847693000f54ae08df6bdd918a169ac..ca99306b85a9e5e5e8c40e314d802f411099a2bb 100644
--- a/src/strikeslip/strikeslip.cc
+++ b/src/strikeslip/strikeslip.cc
@@ -72,6 +72,7 @@
 #include <dune/tectonic/spatial-solving/solverfactory.hh>
 
 #include <dune/tectonic/time-stepping/adaptivetimestepper.hh>
+#include <dune/tectonic/time-stepping/uniformtimestepper.hh>
 #include <dune/tectonic/time-stepping/rate.hh>
 #include <dune/tectonic/time-stepping/state.hh>
 #include <dune/tectonic/time-stepping/updaters.hh>
@@ -118,7 +119,7 @@ int main(int argc, char *argv[]) {
     auto const parset = getParameters(argc, argv);
 
     auto outPath = std::filesystem::current_path();
-    outPath +=  "/output/" + parset.get<std::string>("outPath");
+    outPath +=  "/output/" + parset.get<std::string>("general.outPath");
     if (!std::filesystem::is_directory(outPath))
         std::filesystem::create_directories(outPath);
 
@@ -178,11 +179,12 @@ int main(int argc, char *argv[]) {
     for (size_t i=0; i<bodyCount; i++) {
         nVertices[i] = contactNetwork.body(i)->nVertices();
     }
+    print(nVertices, "#dofs: ");
 
     using MyProgramState = ProgramState<Vector, ScalarVector>;
     MyProgramState programState(nVertices);
 
-    IOHandler<Assembler, ContactNetwork> ioHandler(parset.sub("io"), contactNetwork);
+    IOHandler<Assembler, ContactNetwork, MyProgramState> ioHandler(parset.sub("io"), contactNetwork);
 
     bool restartRead = ioHandler.read(programState);
     if (!restartRead) {
@@ -349,21 +351,25 @@ int main(int argc, char *argv[]) {
         stepBase(parset, contactNetwork, totalDirichletNodes, globalFriction, frictionNodes,
                  externalForces, stateEnergyNorms);
 
-    AdaptiveTimeStepper<NonlinearFactory, std::decay_t<decltype(contactNetwork)>, Updaters, std::decay_t<decltype(stateEnergyNorms)>>
+    /*AdaptiveTimeStepper<NonlinearFactory, std::decay_t<decltype(contactNetwork)>, Updaters, std::decay_t<decltype(stateEnergyNorms)>>
         adaptiveTimeStepper(stepBase, contactNetwork, current,
                             programState.relativeTime, programState.relativeTau,
-                            mustRefine);
+                            mustRefine);*/
 
-    size_t timeSteps = parset.get<size_t>("timeSteps.timeSteps");
+    UniformTimeStepper<NonlinearFactory, std::decay_t<decltype(contactNetwork)>, Updaters, std::decay_t<decltype(stateEnergyNorms)>>
+        timeStepper(stepBase, contactNetwork, current,
+                            programState.relativeTime, programState.relativeTau);
 
-    while (!adaptiveTimeStepper.reachedEnd()) {
+    size_t timeSteps = std::round(parset.get<double>("timeSteps.timeSteps"));
+
+    while (!timeStepper.reachedEnd()) {
       programState.timeStep++;
 
       //preconditioner.build();
-      iterationCount = adaptiveTimeStepper.advance();
+      iterationCount = timeStepper.advance();
 
-      programState.relativeTime = adaptiveTimeStepper.relativeTime_;
-      programState.relativeTau = adaptiveTimeStepper.relativeTau_;
+      programState.relativeTime = timeStepper.relativeTime_;
+      programState.relativeTau = timeStepper.relativeTau_;
       current.rate_->extractDisplacement(programState.u);
       current.rate_->extractVelocity(programState.v);
       current.rate_->extractAcceleration(programState.a);
diff --git a/src/strikeslip/strikeslip.cfg b/src/strikeslip/strikeslip.cfg
index dc92ad1a31de62d61733a290073fe693d61e5c41..f373d429327b17af9833307c0d89af3d8ace4dda 100644
--- a/src/strikeslip/strikeslip.cfg
+++ b/src/strikeslip/strikeslip.cfg
@@ -1,54 +1,53 @@
-outPath = test  # output written to ./output/strikeslip/outPath
-
-# -*- mode:conf -*-
+[general]
+outPath = friction  # output written to ./output/strikeslip/outPath
 gravity         = 0.0     # [m/s^2]
 
 [body0]
 length          = 0.5      # [m]
 height          = 0.5     # [m]
 depth           = 0.12     # [m]
-bulkModulus     = 0.5e5    # [Pa] #2190
-poissonRatio    = 0.3     # [1]  #0.11
+bulkModulus     = 64103    # [Pa] #2190
+poissonRatio    = 0.11     # [1]  #0.11
 [body0.elastic]
 distFromDiag    = 0.2
-density         = 900      # [kg/m^3] #750
-shearViscosity  = 1e3     # [Pas]
-bulkViscosity   = 1e3     # [Pas]
+density         = 130      # [kg/m^3] #750
+shearViscosity  = 0.0     # [Pas]
+bulkViscosity   = 0.0     # [Pas]
 [body0.viscoelastic]
-density         = 1000     # [kg/m^3]
-shearViscosity  = 1e4     # [Pas]
-bulkViscosity   = 1e4     # [Pas]
+density         = 130     # [kg/m^3]
+shearViscosity  = 0.0     # [Pas]
+bulkViscosity   = 0.0     # [Pas]
 
 [body1]
 length          = 0.5     # [m]
 height          = 0.5     # [m]
 depth           = 0.12     # [m]
-bulkModulus     = 1e5    # [Pa]
-poissonRatio    = 0.0     # [1]
+bulkModulus     = 64103    # [Pa]
+poissonRatio    = 0.11     # [1]
 [body1.elastic]
 distFromDiag    = 0.2
-density         = 900      # [kg/m^3]
+density         = 130      # [kg/m^3]
 shearViscosity  = 0.0    # [Pas]
 bulkViscosity   = 0.0     # [Pas]
 [body1.viscoelastic]
-density         = 1000     # [kg/m^3]
+density         = 130     # [kg/m^3]
 shearViscosity  = 0.0     # [Pas]
 bulkViscosity   = 0.0     # [Pas]
 
 [boundary.friction]
-C               = 10       # [Pa]
-mu0             = 0.7      # [ ]
-V0              = 5e-5     # [m/s]
-L               = 2.25e-5  # [m]
+C               = 6       # [Pa]
+mu0             = 0.48      # [ ]
+V0              = 1e-3     # [m/s]
+L               = 1e-6  # [m]
 initialAlpha    = 0        # [ ]
 stateModel      = AgeingLaw
 frictionModel   = Truncated #Regularised
 [boundary.friction.weakening]
-a               = 0.002    # [ ]
-b               = 0.017    # [ ]
+a               = 0.054    # [ ]
+b               = 0.074    # [ ]
 [boundary.friction.strengthening]
-a               = 0.020    # [ ]
-b               = 0.005    # [ ]
+a               = 0.054    # [ ]
+b               = 0.074    # [ ]
 
 [boundary.neumann]
 sigmaN          = 200.0      # [Pa]
@@ -65,17 +64,17 @@ restarts.write  = true #true
 vtk.write       = true
 
 [problem]
-finalTime       = 100     # [s] #1000
+finalTime       = 15     # [s] #1000
 bodyCount       = 2
 
 [initialTime]
 timeStep = 0
 relativeTime = 0.0
-relativeTau = 2e-2 # 1e-6
+relativeTau = 1e-4 # 1e-6
 
 [timeSteps]
 scheme = newmark
-timeSteps = 10
+timeSteps = 1e4
 
 [u0.solver]
 maximumIterations = 100