diff --git a/src/friction_writer.cc b/src/friction_writer.cc
index 8dba3a93eb3bce4e86524ad5f0d7f056e0965330..b830a01cffc6e13718174b3e266dfb8770533e76 100644
--- a/src/friction_writer.cc
+++ b/src/friction_writer.cc
@@ -6,12 +6,19 @@
 
 template <class ScalarVector, class Vector>
 FrictionWriter<ScalarVector, Vector>::FrictionWriter(
+    Vector const &vertexCoordinates,
     Dune::BitSetVector<1> const &_boundaryNodes)
     : coefficientWriter("coefficients", std::fstream::out),
       displacementWriter("displacements", std::fstream::out),
       stateWriter("states", std::fstream::out),
       velocityWriter("velocities", std::fstream::out),
-      boundaryNodes(_boundaryNodes) {}
+      boundaryNodes(_boundaryNodes) {
+  std::fstream vertexCoordinateWriter("coordinates", std::fstream::out);
+  for (size_t i = 0; i < boundaryNodes.size(); ++i)
+    if (boundaryNodes[i][0])
+      vertexCoordinateWriter << vertexCoordinates[i] << std::endl;
+  vertexCoordinateWriter.close();
+}
 
 template <class ScalarVector, class Vector>
 FrictionWriter<ScalarVector, Vector>::~FrictionWriter() {
diff --git a/src/friction_writer.hh b/src/friction_writer.hh
index dbd283497718867787db17138763904150362e10..09cb1b05ead6e92e1cc930d11ae31e685ef0060a 100644
--- a/src/friction_writer.hh
+++ b/src/friction_writer.hh
@@ -7,7 +7,8 @@
 
 template <class ScalarVector, class Vector> class FrictionWriter {
 public:
-  FrictionWriter(Dune::BitSetVector<1> const &_boundaryNodes);
+  FrictionWriter(Vector const &vertexCoordinates,
+                 Dune::BitSetVector<1> const &_boundaryNodes);
 
   ~FrictionWriter();
 
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 935bf3aa7cc296b5d2d94c353f7426ead503f20a..b0ffa893051a0d3529414c5a335e1e37d1541b7c 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -269,7 +269,19 @@ int main(int argc, char *argv[]) {
                          parset.sub("a0.solver"));
     }
     // }}}
-    FrictionWriter<ScalarVector, Vector> writer(frictionalNodes);
+
+    Vector vertexCoordinates(fineVertexCount);
+    {
+      Dune::MultipleCodimMultipleGeomTypeMapper<
+          GridView, Dune::MCMGVertexLayout> const vertexMapper(leafView);
+      for (auto it = leafView.begin<dims>(); it != leafView.end<dims>(); ++it) {
+        auto const geometry = it->geometry();
+        assert(geometry.corners() == 1);
+        vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0);
+      }
+    }
+    FrictionWriter<ScalarVector, Vector> writer(vertexCoordinates,
+                                                frictionalNodes);
     {
       ScalarVector c;
       myGlobalNonlinearity->coefficientOfFriction(v_initial, c);
@@ -289,24 +301,6 @@ int main(int argc, char *argv[]) {
                              dirichletNodes);
     auto multigridStep = factory.getSolver();
 
-    {
-      Vector vertexCoordinates(fineVertexCount);
-      {
-        Dune::MultipleCodimMultipleGeomTypeMapper<
-            GridView, Dune::MCMGVertexLayout> const vertexMapper(leafView);
-        for (auto it = leafView.begin<dims>(); it != leafView.end<dims>();
-             ++it) {
-          auto const geometry = it->geometry();
-          assert(geometry.corners() == 1);
-          vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0);
-        }
-      }
-      std::fstream vertexCoordinateWriter("coordinates", std::fstream::out);
-      for (size_t i = 0; i < fineVertexCount; ++i)
-        if (frictionalNodes[i][0])
-          vertexCoordinateWriter << vertexCoordinates[i] << std::endl;
-      vertexCoordinateWriter.close();
-    }
     std::fstream iterationWriter("iterations", std::fstream::out),
         relaxationWriter("relaxation", std::fstream::out);