diff --git a/src/one-body-sample.org b/src/one-body-sample.org
index 56a4df03c0ce0761aa37a12c24b68186eb8a6b4f..84c155fcda25a1a50d0fbf6cc9f769410f250611 100644
--- a/src/one-body-sample.org
+++ b/src/one-body-sample.org
@@ -394,27 +394,30 @@
       timeSteppingScheme->setup(ell, tau, time,
                                 problem_rhs, problem_iterate, problem_A);
   
+      auto solveDisplacementProblem = [&](VectorType &_problem_iterate,
+                                          SingletonVectorType const &_alpha) {
+        auto myGlobalNonlinearity = assemble_nonlinearity<MatrixType, VectorType>
+        (parset.sub("boundary.friction"), *nodalIntegrals, _alpha,
+         surfaceNormalStress);
+  
+        MyConvexProblemType const myConvexProblem
+        (problem_A, *myGlobalNonlinearity, problem_rhs);
+        MyBlockProblemType myBlockProblem(parset, myConvexProblem);
+        auto multigridStep = mySolver.getSolver();
+        multigridStep->setProblem(_problem_iterate, myBlockProblem);
+  
+        LoopSolver<VectorType> overallSolver
+        (multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
+         parset.get<double>("solver.tolerance"), &energyNorm, verbosity,
+         false); // absolute error
+        overallSolver.solve();
+      };
+  
       // Since the velocity explodes in the quasistatic case, use the
       // displacement as a convergence criterion
       VectorType u_saved;
       for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) {
-        {
-          auto myGlobalNonlinearity
-            = assemble_nonlinearity<MatrixType, VectorType>
-            (parset.sub("boundary.friction"), *nodalIntegrals, alpha,
-             surfaceNormalStress);
-  
-          MyConvexProblemType const myConvexProblem
-            (problem_A, *myGlobalNonlinearity, problem_rhs);
-          MyBlockProblemType myBlockProblem(parset, myConvexProblem);
-          auto multigridStep = mySolver.getSolver();
-          multigridStep->setProblem(problem_iterate, myBlockProblem);
-  
-          LoopSolver<VectorType> overallSolver
-            (multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
-             solver_tolerance, &energyNorm, verbosity, false); // absolute error
-          overallSolver.solve();
-        }
+        solveDisplacementProblem(problem_iterate, alpha);
   
         timeSteppingScheme->postProcess(problem_iterate);
         timeSteppingScheme->extractDisplacement(u);