diff --git a/dune/gfe/cosseratvtkwriter.hh b/dune/gfe/cosseratvtkwriter.hh
index 3f0f4391703429b4445a8627a9a6cc0c852a25b7..a11f7c4c235890b04d4f5003cb18a751d1505387 100644
--- a/dune/gfe/cosseratvtkwriter.hh
+++ b/dune/gfe/cosseratvtkwriter.hh
@@ -65,6 +65,9 @@ class CosseratVTKWriter
 
     
 public:
+
+    /** \brief Write a Cosserat configuration given as vertex data
+     */
     static void write(const GridType& grid,
                       const std::vector<RigidBodyMotion<double,3> >& configuration,
                       const std::string& filename)
@@ -106,6 +109,53 @@ public:
     
     }    
 
+    /** \brief Write a configuration given with respect to a scalar function space basis
+     */
+    template <typename Basis>
+    static void write(const Basis& basis,
+                      const std::vector<RigidBodyMotion<double,3> >& configuration,
+                      const std::string& filename)
+    {
+        typedef typename GridType::LeafGridView GridView;
+
+        const GridType& grid = basis.getGridView().grid();
+
+        typedef Dune::GeometryGrid<GridType,DeformationFunction<GridView> > DeformedGridType;
+
+        DeformationFunction<typename GridType::LeafGridView> deformationFunction(grid.leafGridView(), configuration);
+
+        // stupid, can't instantiate deformedGrid with a const grid
+        DeformedGridType deformedGrid(const_cast<GridType&>(grid), deformationFunction);
+
+        typedef P1NodalBasis<typename DeformedGridType::LeafGridView,double> P1Basis;
+        P1Basis p1Basis(deformedGrid.leafGridView());
+
+        Dune::VTKWriter<typename DeformedGridType::LeafGridView> vtkWriter(deformedGrid.leafGridView());
+
+        // Make three vector fields containing the directors
+        typedef std::vector<Dune::FieldVector<double,3> > CoefficientType;
+
+        std::vector<CoefficientType> directors(3);
+
+        for (int i=0; i<3; i++) {
+
+            directors[i].resize(configuration.size());
+            for (size_t j=0; j<configuration.size(); j++)
+                directors[i][j] = configuration[j].q.director(i);
+
+            std::stringstream iAsAscii;
+            iAsAscii << i;
+
+            Dune::shared_ptr<VTKBasisGridFunction<P1Basis,CoefficientType> > vtkDirector
+               = Dune::shared_ptr<VTKBasisGridFunction<P1Basis,CoefficientType> >
+                   (new VTKBasisGridFunction<P1Basis,CoefficientType>(p1Basis, directors[i], "director"+iAsAscii.str()));
+            vtkWriter.addVertexData(vtkDirector);
+        }
+
+        vtkWriter.write(filename);
+
+    }
+
 };
 
 #endif