diff --git a/src/one-body-sample.org b/src/one-body-sample.org
index ac3d65817d35363c9a3f3631fdb998748b60ac99..ab8164bf39528973208cae9143143c23af2639f9 100644
--- a/src/one-body-sample.org
+++ b/src/one-body-sample.org
@@ -176,6 +176,27 @@
     std::cerr << std::endl;
 #+end_src
 
+#+name: setupAndSolveProblem
+#+begin_src c++
+  {
+    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();
+  }
+#+end_src
+
 * Main
 #+begin_src c++ :tangle one-body-sample.cc :noweb yes
   #ifdef HAVE_CONFIG_H
@@ -484,21 +505,7 @@
   
           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();
+            <<setupAndSolveProblem>>;
   
             timeSteppingScheme->postProcess(problem_iterate);
             timeSteppingScheme->extractDisplacement(u);