diff --git a/src/hdf5-writer.hh b/src/hdf5-writer.hh
index 0ee16c1425c65444c0b9a9c2000de4016083a3be..211cb8ef12b5e0a2bac29e851c4ee1e7924cf538 100644
--- a/src/hdf5-writer.hh
+++ b/src/hdf5-writer.hh
@@ -58,7 +58,7 @@ class HDF5Writer {
   template <class Friction>
   void reportSolution(ProgramState const &programState,
                       // for the friction coefficient
-                      Friction &friction) {
+                      std::vector<std::shared_ptr<Friction>>& friction) {
     timeWriter_.write(programState);
 
     for (size_t i=0; i<bodyCount_; i++) {
@@ -66,7 +66,7 @@ class HDF5Writer {
       patchInfoWriters_[i]->write(programState);
 #endif
       surfaceWriters_[i]->write(programState);
-      frictionalBoundaryWriters_[i]->write(programState, friction);
+      frictionalBoundaryWriters_[i]->write(programState, *friction[i]);
     }
   }
 
diff --git a/src/multi-body-problem.cc b/src/multi-body-problem.cc
index a6d496ec58f17e4eac506f96767d51aba12a452c..e1183e14dff399f7b52e25134b7024f79c5c01f3 100644
--- a/src/multi-body-problem.cc
+++ b/src/multi-body-problem.cc
@@ -462,10 +462,10 @@ int main(int argc, char *argv[]) {
     const MyVTKWriter<MyVertexBasis, MyCellBasis> vtkWriter(cellBases, vertexBases, "body");
 
     IterationRegister iterationCount;
-    /*
+
     auto const report = [&](bool initial = false) {
       if (writeData) {
-        dataWriter->reportSolution(programState, *myGlobalFriction);
+        dataWriter->reportSolution(programState, globalFriction);
         if (!initial)
           dataWriter->reportIterations(programState, iterationCount);
         dataFile->flush();
@@ -484,17 +484,19 @@ int main(int argc, char *argv[]) {
                   << std::endl;
 
       if (parset.get<bool>("io.vtk.write")) {
-        ScalarVector stress;
-        myAssembler.assembleVonMisesStress(body.getYoungModulus(),
+        std::vector<ScalarVector> stress(assemblers.size());
+
+        for (size_t i=0; i<stress.size(); i++) {
+          assemblers[i]->assembleVonMisesStress(body.getYoungModulus(),
                                            body.getPoissonRatio(),
-                                           programState.u, stress);
+                                           programState.u[i], stress[i]);
+        }
+
         vtkWriter.write(programState.timeStep, programState.u, programState.v,
                         programState.alpha, stress);
       }
     };
     report(true);
-    */
-
 
     // Set up TNNMG solver
     using NonlinearFactory = SolverFactory<DeformedGrid, GlobalFriction<Matrix, Vector>, Matrix, Vector>;
@@ -560,7 +562,7 @@ int main(int argc, char *argv[]) {
       nBodyAssembler.assembleTransferOperator();
       nBodyAssembler.assembleObstacle();
 
-    //  report();
+      report();
 
       if (terminationRequested) {
         std::cerr << "Terminating prematurely" << std::endl;