diff --git a/dune/vtk/datacollectors/yaspdatacollector.hh b/dune/vtk/datacollectors/yaspdatacollector.hh
index 7f5b352b83ef2914aa81bd87db22f7297d44fce8..6902f61ed83fb2582a73569094d8d202f93cfef3 100644
--- a/dune/vtk/datacollectors/yaspdatacollector.hh
+++ b/dune/vtk/datacollectors/yaspdatacollector.hh
@@ -93,7 +93,7 @@ public:
   }
 
 
-  /// Extract the ordinates from the Coordinates object of the current level
+  /// Extract the ordinates from the coordinates object of the current level
   template <class T>
   std::array<std::vector<T>, 3> coordinatesImpl () const
   {
@@ -119,7 +119,6 @@ private:
   std::array<int, 6> extent_;
   FieldVector<ctype,3> origin_;
   FieldVector<ctype,3> spacing_;
-  std::vector<std::size_t> indexMap_;
   int level_;
 };
 
diff --git a/dune/vtk/writers/vtkimagedatawriter.impl.hh b/dune/vtk/writers/vtkimagedatawriter.impl.hh
index caff7e56de2b8d9190140463762e3040d651f5d8..468b785d3927be30687895d0ff6afbe77940aa2c 100644
--- a/dune/vtk/writers/vtkimagedatawriter.impl.hh
+++ b/dune/vtk/writers/vtkimagedatawriter.impl.hh
@@ -32,7 +32,7 @@ void VtkImageDataWriter<GV,DC>
 
   std::vector<pos_type> offsets; // pos => offset
   out << "<VTKFile"
-      << " type=\"StructuredGrid\""
+      << " type=\"ImageData\""
       << " version=\"1.0\""
       << " byte_order=\"" << this->getEndian() << "\""
       << " header_type=\"UInt64\""
@@ -110,7 +110,7 @@ void VtkImageDataWriter<GV,DC>
   assert(out.is_open());
 
   out << "<VTKFile"
-      << " type=\"StructuredGrid\""
+      << " type=\"PImageData\""
       << " version=\"1.0\""
       << " byte_order=\"" << this->getEndian() << "\""
       << " header_type=\"UInt64\""
diff --git a/src/benchmark.cc b/src/benchmark.cc
index 81a8eebf110c15fb305d641239142ff71b4f3596..3f2cf8fd11d1b5f59f1d6f65cf1584aeb65797c0 100644
--- a/src/benchmark.cc
+++ b/src/benchmark.cc
@@ -51,7 +51,7 @@ void writer_old (GridView const& gridView)
   for (auto const& test_case : test_cases_old) {
     t.reset();
     VTKWriter<GridView> vtkWriter(gridView, std::get<2>(test_case));
-    vtkWriter.write("/tmp/writer_old_" + std::get<0>(test_case) + ".vtu",
+    vtkWriter.write("writer_old_" + std::get<0>(test_case) + ".vtu",
       std::get<1>(test_case));
     std::cout << "  time (writer_old_" + std::get<0>(test_case) + ") = " << t.elapsed() << "\n";
   }
@@ -64,7 +64,7 @@ void writer_new (GridView const& gridView)
   experimental::VtkUnstructuredGridWriter<GridView> vtkWriter(gridView);
   for (auto const& test_case : test_cases_new) {
     t.reset();
-    vtkWriter.write("/tmp/writer_new_" + std::get<0>(test_case) + ".vtu",
+    vtkWriter.write("writer_new_" + std::get<0>(test_case) + ".vtu",
       std::get<1>(test_case), std::get<2>(test_case));
     std::cout << "  time (writer_new_" + std::get<0>(test_case) + ") = " << t.elapsed() << "\n";
   }
@@ -103,7 +103,7 @@ int main (int argc, char** argv)
     using GridType = YaspGrid<dim.value>;
     FieldVector<double,dim.value> upperRight; upperRight = 1.0;
     auto numElements = filledArray<dim.value,int>(10);
-    GridType grid(upperRight, numElements);
+    GridType grid(upperRight, numElements, 0, 0);
 
     std::cout << "DIMENSION " << dim.value << "\n";
     writer_old(grid.leafGridView());
diff --git a/src/structuredgridwriter.cc b/src/structuredgridwriter.cc
index 7659dcd38b420ba80683f80397fba8728ed4e577..535ce1f68151bb61929bf3cbbf5e83e70adca2b8 100644
--- a/src/structuredgridwriter.cc
+++ b/src/structuredgridwriter.cc
@@ -23,6 +23,7 @@
 #include <dune/vtk/writers/vtkimagedatawriter.hh>
 #include <dune/vtk/writers/vtkrectilineargridwriter.hh>
 #include <dune/vtk/writers/vtkstructuredgridwriter.hh>
+#include <dune/vtk/writers/vtkunstructuredgridwriter.hh>
 #include <dune/vtk/datacollectors/yaspdatacollector.hh>
 #include <dune/vtk/datacollectors/spdatacollector.hh>
 
@@ -36,7 +37,7 @@ using int_ = std::integral_constant<int,dim>;
 template <class GridView>
 void write(std::string prefix, GridView const& gridView)
 {
-  auto fct2 = makeAnalyticGridViewFunction([](auto const& x) {
+  auto fct2 = makeAnalyticGridViewFunction([](auto const& x) -> float {
     return std::sin(10*x[0]) * (x.size() > 1 ? std::cos(10*x[1]) : 1) + (x.size() > 2 ? std::sin(10*x[2]) : 0);
   }, gridView);
 
@@ -44,21 +45,28 @@ void write(std::string prefix, GridView const& gridView)
     using Writer = VtkImageDataWriter<GridView>;
     Writer vtkWriter(gridView);
     vtkWriter.addPointData(fct2, "analytic");
-    vtkWriter.write(prefix + "id_ascii_float32.vti", Vtk::ASCII);
+    vtkWriter.write(prefix + "id_ascii_float32.vti", Vtk::ASCII, Vtk::FLOAT32);
   }
 
   {
     using Writer = VtkRectilinearGridWriter<GridView>;
     Writer vtkWriter(gridView);
     vtkWriter.addPointData(fct2, "analytic");
-    vtkWriter.write(prefix + "rg_ascii_float32.vtr", Vtk::ASCII);
+    vtkWriter.write(prefix + "rg_ascii_float32.vtr", Vtk::ASCII, Vtk::FLOAT32);
   }
 
   {
     using Writer = VtkStructuredGridWriter<GridView>;
     Writer vtkWriter(gridView);
     vtkWriter.addPointData(fct2, "analytic");
-    vtkWriter.write(prefix + "sg_ascii_float32.vts", Vtk::ASCII);
+    vtkWriter.write(prefix + "sg_ascii_float32.vts", Vtk::ASCII, Vtk::FLOAT32);
+  }
+
+  {
+    using Writer = VtkUnstructuredGridWriter<GridView>;
+    Writer vtkWriter(gridView);
+    vtkWriter.addPointData(fct2, "analytic");
+    vtkWriter.write(prefix + "ug_ascii_float32.vts", Vtk::ASCII, Vtk::FLOAT32);
   }
 }
 
@@ -67,9 +75,9 @@ void write_yaspgrid(std::integral_constant<int,dim>)
 {
   using GridType = YaspGrid<dim>;
   FieldVector<double,dim> upperRight; upperRight = 1.0;
-  auto numElements = filledArray<dim,int>(8);
+  auto numElements = filledArray<dim,int>(16);
   GridType grid(upperRight,numElements,0,0);
-  grid.globalRefine(1);
+  grid.globalRefine(3);
 
   write("yasp_" + std::to_string(dim) + "d_", grid.leafGridView());
 }
@@ -80,7 +88,7 @@ void write_spgrid(std::integral_constant<int,dim>)
 #if HAVE_DUNE_SPGRID
   using GridType = SPGrid<double,dim, SPIsotropicRefinement>;
   FieldVector<double,dim> upperRight; upperRight = 1.0;
-  auto numElements = filledArray<dim,int>(8);
+  auto numElements = filledArray<dim,int>(12);
   GridType grid(SPDomain<double,dim>::unitCube(),numElements);
   // grid.globalRefine(1);