diff --git a/src/boundary_writer.cc b/src/boundary_writer.cc
index 0a6d39419298ddab8e5206109252e56473bf690f..8d039d9d79163a0130442c4cda71256718bf5459 100644
--- a/src/boundary_writer.cc
+++ b/src/boundary_writer.cc
@@ -7,10 +7,11 @@
 template <class ScalarVector, class Vector>
 BoundaryWriter<ScalarVector, Vector>::BoundaryWriter(
     Vector const &vertexCoordinates,
-    Dune::BitSetVector<1> const &_boundaryNodes)
+    Dune::BitSetVector<1> const &_boundaryNodes, Projector projector)
     : displacementWriter("displacements", std::fstream::out),
       velocityWriter("velocities", std::fstream::out),
-      boundaryNodes(_boundaryNodes) {
+      boundaryNodes(_boundaryNodes),
+      projector_(projector) {
   std::fstream vertexCoordinateWriter("coordinates", std::fstream::out);
   for (size_t i = 0; i < boundaryNodes.size(); ++i)
     if (boundaryNodes[i][0])
@@ -31,8 +32,8 @@ void BoundaryWriter<ScalarVector, Vector>::writeKinetics(Vector const &u,
     if (!boundaryNodes[i][0])
       continue;
 
-    displacementWriter << u[i][0] << " ";
-    velocityWriter << v[i][0] << " ";
+    displacementWriter << projector_(u[i]) << " ";
+    velocityWriter << projector_(v[i]) << " ";
   }
 
   displacementWriter << std::endl;
diff --git a/src/boundary_writer.hh b/src/boundary_writer.hh
index 9bb8346ff70c7c2efa82665bdee5536e6c1ae72a..670e68b007612bb8dc76fa8e2fdd7361d7a2f341 100644
--- a/src/boundary_writer.hh
+++ b/src/boundary_writer.hh
@@ -7,9 +7,13 @@
 #include <dune/common/bitsetvector.hh>
 
 template <class ScalarVector, class Vector> class BoundaryWriter {
+protected:
+  using Projector = std::function<double(typename Vector::block_type const &)>;
+
 public:
   BoundaryWriter(Vector const &vertexCoordinates,
-                 Dune::BitSetVector<1> const &_boundaryNodes);
+                 Dune::BitSetVector<1> const &_boundaryNodes,
+                 Projector projector);
 
   virtual ~BoundaryWriter();
 
@@ -19,5 +23,7 @@ template <class ScalarVector, class Vector> class BoundaryWriter {
   std::fstream displacementWriter;
   std::fstream velocityWriter;
   Dune::BitSetVector<1> const &boundaryNodes;
+
+  Projector projector_;
 };
 #endif
diff --git a/src/friction_writer.cc b/src/friction_writer.cc
index 465e2026ca110ef13e2f68e53c5de3f810cb32a6..269f4969cfc37450ae13b6591d0f92ffaf98cb94 100644
--- a/src/friction_writer.cc
+++ b/src/friction_writer.cc
@@ -7,8 +7,9 @@
 template <class ScalarVector, class Vector>
 FrictionWriter<ScalarVector, Vector>::FrictionWriter(
     Vector const &vertexCoordinates,
-    Dune::BitSetVector<1> const &_boundaryNodes)
-    : BW(vertexCoordinates, _boundaryNodes),
+    Dune::BitSetVector<1> const &_boundaryNodes,
+    typename BW::Projector projector)
+    : BW(vertexCoordinates, _boundaryNodes, projector),
       coefficientWriter("coefficients", std::fstream::out),
       stateWriter("states", std::fstream::out) {}
 
diff --git a/src/friction_writer.hh b/src/friction_writer.hh
index 58b2c8b2e00a6deea0c4a4d8199f11c25cefe60d..32b42ed4675a0d05d4ca383eff5c76d9c0f2d8ed 100644
--- a/src/friction_writer.hh
+++ b/src/friction_writer.hh
@@ -14,7 +14,8 @@ class FrictionWriter : public BoundaryWriter<ScalarVector, Vector> {
 
 public:
   FrictionWriter(Vector const &vertexCoordinates,
-                 Dune::BitSetVector<1> const &_boundaryNodes);
+                 Dune::BitSetVector<1> const &_boundaryNodes,
+                 typename BW::Projector projector);
 
   ~FrictionWriter();
 
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 692a3820e4cede7fc80d5bc61b13efeb36bc4466..96f64c5391e5b2f4dda78b0088f1e55eead0627b 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -280,8 +280,9 @@ int main(int argc, char *argv[]) {
         vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0);
       }
     }
-    FrictionWriter<ScalarVector, Vector> frictionWriter(vertexCoordinates,
-                                                        frictionalNodes);
+    FrictionWriter<ScalarVector, Vector> frictionWriter(
+        vertexCoordinates, frictionalNodes,
+        [](LocalVector const &x) { return x[0]; });
     auto const reportFriction = [&](Vector const &_u, Vector const &_v,
                                     ScalarVector const &_alpha) {
       ScalarVector c;