diff --git a/dirneucoupling.cc b/dirneucoupling.cc
index 1f744c7e8a48212aba21ad2583e00ad419a04843..8ce54bd69e220cec4db990a9eea1c7d26271ee0a 100644
--- a/dirneucoupling.cc
+++ b/dirneucoupling.cc
@@ -486,22 +486,8 @@ int main (int argc, char *argv[]) try
         // Then the rod
         iSolFilename = resultPath + "tmp/intermediateRodSolution_" + iAsAscii.str();
 
-        FILE* fpRod = fopen(iSolFilename.c_str(), "wb");
-        if (!fpRod)
-            DUNE_THROW(SolverError, "Couldn't open file " << iSolFilename << " for writing");
-            
-        for (int j=0; j<rodX.size(); j++) {
-
-            for (int k=0; k<dim; k++)
-                fwrite(&rodX[j].r[k], sizeof(double), 1, fpRod);
-
-            for (int k=0; k<4; k++)  // 3d hardwired here!
-                fwrite(&rodX[j].q[k], sizeof(double), 1, fpRod);
-
-        }
-
-        fclose(fpRod);
-
+        RodWriter::writeBinary(rodX, iSolFilename);
+        
         // ////////////////////////////////////////////
         //   Compute error in the energy norm
         // ////////////////////////////////////////////