diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 27aa3e4fb0166cb3c5d308122fc5d0cd0ab50cd6..e76d5db45fc76896a7505148bbb6b8dcef2386c2 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -188,7 +188,6 @@ int main(int argc, char *argv[]) {
     P1Basis const p1Basis(leafView);
 
     // Set up the boundary
-    size_t specialNode = finestSize;
     Dune::BitSetVector<dims> ignoreNodes(finestSize, false);
     Dune::BitSetVector<1> neumannNodes(finestSize, false);
     Dune::BitSetVector<1> frictionalNodes(finestSize, false);
@@ -204,10 +203,6 @@ int main(int argc, char *argv[]) {
         coordinates[id] = it->geometry().corner(0);
         auto const &localCoordinates = coordinates[id];
 
-        // Find the lower left corner
-        if (localCoordinates == lowerLeft)
-          specialNode = id;
-
         // lower face
         if (localCoordinates[1] == lowerLeft[1]) {
           frictionalNodes[id] = true;
@@ -226,9 +221,6 @@ int main(int argc, char *argv[]) {
         else if (localCoordinates[0] == lowerLeft[0])
           ;
       }
-      // Make sure that specialNode was set and points to a frictional node
-      assert(specialNode != finestSize);
-      assert(frictionalNodes[specialNode][0]);
     };
 
     // Set up functions for time-dependent boundary conditions
@@ -320,10 +312,16 @@ int main(int argc, char *argv[]) {
     Solver::VerbosityMode const verbosity =
         parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;
 
-    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);
+    std::fstream coordinate_writer("coordinates", std::fstream::out);
+    for (size_t i = 0; i < frictionalNodes.size(); ++i)
+      if (frictionalNodes[i][0])
+        coordinate_writer << coordinates[i] << std::endl;
+    coordinate_writer.close();
+
+    std::fstream state_writer("states", std::fstream::out);
+    std::fstream displacement_writer("displacements", std::fstream::out);
+    std::fstream velocity_writer("velocities", std::fstream::out);
+    std::fstream coefficient_writer("coefficients", std::fstream::out);
     ;
 
     auto timeSteppingScheme =
@@ -419,13 +417,20 @@ int main(int argc, char *argv[]) {
         std::cerr << std::endl;
       ;
 
-      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;
-      ;
+      for (size_t i = 0; i < frictionalNodes.size(); ++i)
+        if (frictionalNodes[i][0]) {
+          state_writer << alpha[i][0] << " ";
+          displacement_writer << u[i][0] << " ";
+          velocity_writer << ud[i][0] << " ";
+          coefficient_writer << mu + a *std::log(ud[i].two_norm() / V0) +
+                                    b * (alpha[i] + std::log(V0 / L)) << " ";
+        }
+
+      state_writer << std::endl;
+      displacement_writer << std::endl;
+      velocity_writer << std::endl;
+      coefficient_writer << std::endl;
+
       if (parset.get<bool>("writeVTK")) {
         SingletonVectorType vonMisesStress;
         VonMisesStressAssembler<GridType> localStressAssembler(