diff --git a/src/one-body-sample.org b/src/one-body-sample.org
index 2bcd7fbfebbf2a2f826925286759427867005dde..28b0996770676c06c0fe0eba26c89855956be7c6 100644
--- a/src/one-body-sample.org
+++ b/src/one-body-sample.org
@@ -103,9 +103,40 @@
       else if (coordinates[0] == lowerLeft[0])
         ;
     }
+    // Make sure that specialNode was set and points to a frictional node
+    assert(specialNode != finestSize);
+    assert(frictionalNodes[specialNode][0]);
   }
 #+end_src
 
+* Writers
+#+name: createWriters
+#+begin_src c++
+  std::fstream state_writer("state", std::fstream::out);
+  std::fstream displacement_writer("displacement", std::fstream::out);
+  std::fstream velocity_writer("velocity", std::fstream::out);
+  std::fstream coefficient_writer("coefficient", std::fstream::out);
+#+end_src
+
+#+name: writeData
+#+begin_src c++
+  state_writer        << alpha[specialNode][0] << " " << std::endl;
+  displacement_writer <<     u[specialNode][0] << " " << std::endl;
+  velocity_writer     <<    ud[specialNode][0] << " " << std::endl;
+  coefficient_writer  << mu
+  + a * std::log(ud[specialNode].two_norm() / V0)
+  + b * (alpha[specialNode] + std::log(V0 / L))
+  << " " << std::endl;
+#+end_src
+
+#+name: closeWriters
+#+begin_src c++
+  state_writer.close();
+  displacement_writer.close();
+  velocity_writer.close();
+  coefficient_writer.close();
+#+end_src
+
 * Main
 #+begin_src c++ :tangle one-body-sample.cc :noweb yes
   #ifdef HAVE_CONFIG_H
@@ -336,8 +367,6 @@
       Dune::BitSetVector<1> neumannNodes(finestSize, false);
       Dune::BitSetVector<1> frictionalNodes(finestSize, false);
       <<setupBoundary>>
-      assert(specialNode != finestSize);
-      assert(frictionalNodes[specialNode][0]);
   
       auto const nodalIntegrals
         = assemble_frictional<GridType, GridView, SmallVector, P1Basis>
@@ -372,10 +401,7 @@
         mySolver(parset.sub("solver.tnnmg"), refinements, solver_tolerance,
                  *grid, ignoreNodes);
   
-      std::fstream state_writer("state", std::fstream::out);
-      std::fstream displacement_writer("displacement", std::fstream::out);
-      std::fstream velocity_writer("velocity", std::fstream::out);
-      std::fstream coefficient_writer("coefficient", std::fstream::out);
+      <<createWriters>>
   
       auto const L = parset.get<double>("boundary.friction.ruina.L");
       auto const a = parset.get<double>("boundary.friction.ruina.a");
@@ -461,15 +487,7 @@
             std::cerr << std::endl;
         }
   
-        { // Write all kinds of data
-          state_writer        << alpha[specialNode][0] << " " << std::endl;
-          displacement_writer <<     u[specialNode][0] << " " << std::endl;
-          velocity_writer     <<    ud[specialNode][0] << " " << std::endl;
-          coefficient_writer  << mu
-            + a * std::log(ud[specialNode].two_norm() / V0)
-            + b * (alpha[specialNode] + std::log(V0 / L))
-                              << " " << std::endl;
-        }
+        <<writeData>>
   
         // Compute von Mises stress and write everything to a file
         if (parset.get<bool>("writeVTK")) {
@@ -491,10 +509,7 @@
                   << " time steps took " << timer.elapsed()
                   << "s" << std::endl;
   
-      state_writer.close();
-      displacement_writer.close();
-      velocity_writer.close();
-      coefficient_writer.close();
+      <<closeWriters>>;
   
       Python::stop();
     }