diff --git a/dune/vtk/datacollectors/continuousdatacollector.hh b/dune/vtk/datacollectors/continuousdatacollector.hh
index 62bc577316697b0b238aa0696f79bacf3b684859..192af3871be2478cec4cff1df8fadd48c90d24c2 100644
--- a/dune/vtk/datacollectors/continuousdatacollector.hh
+++ b/dune/vtk/datacollectors/continuousdatacollector.hh
@@ -70,7 +70,6 @@ public:
     std::vector<std::uint64_t> data;
     data.reserve(numPoints_);
     GlobalIndexSet<GridView> globalIndexSet(gridView_, dim);
-    auto const& indexSet = gridView_.indexSet();
     for (auto const& vertex : vertices(gridView_, partition)) {
       data.emplace_back(globalIndexSet.index(vertex));
     }
diff --git a/src/test/parallel_reader_writer_test.cc b/src/test/parallel_reader_writer_test.cc
index 856c96e53c6e82399ed4ade4e4d657bdc0625e4c..a15261b5cb88ffb614c6f990cd2a0ea989493f29 100644
--- a/src/test/parallel_reader_writer_test.cc
+++ b/src/test/parallel_reader_writer_test.cc
@@ -11,6 +11,7 @@
 
 #include <dune/common/parallel/mpihelper.hh> // An initializer of MPI
 #include <dune/common/filledarray.hh>
+#include <dune/common/std/type_traits.hh>
 #include <dune/common/test/testsuite.hh>
 
 #include <dune/grid/uggrid.hh>
@@ -67,11 +68,11 @@ bool compare_files (std::string const& fn1, std::string const& fn2)
 }
 
 
-template <class G> struct HasParallelGridFactory : std::false_type {};
-#if DUNE_VERSION_GT(DUNE_GRID,2,6) && HAVE_DUNE_ALUGRID
-template<int dim, int dimworld, Dune::ALUGridElementType elType, Dune::ALUGridRefinementType refineType, class Comm>
-struct HasParallelGridFactory<Dune::ALUGrid<dim,dimworld,elType,refineType,Comm>> : std::true_type {};
-#endif
+template <class GF>
+using HasParallelGridFactoryImpl = decltype(std::declval<GF>().createGrid(true,true,std::string(""),true));
+
+template <class G>
+using HasParallelGridFactory = Std::is_detected<HasParallelGridFactoryImpl, GridFactory<G>>;
 
 
 template <class Test>
@@ -107,7 +108,6 @@ void reader_writer_test(MPIHelper& mpi, TestSuite& test, std::string const& test
     auto numElements = filledArray<dim,unsigned int>(4);
     auto gridPtr = StructuredGridFactory<Grid>::createSimplexGrid(lowerLeft, upperRight, numElements);
     gridPtr->loadBalance();
-    // std::cout << "write1\n";
     writer_test(gridPtr->leafGridView(), base_name);
   }
 
@@ -115,7 +115,6 @@ void reader_writer_test(MPIHelper& mpi, TestSuite& test, std::string const& test
 
   // Step 2: read the grid from file1 and write it back to file2
   { GridFactory<Grid> factory;
-    // std::cout << "read1\n";
     VtkReader<Grid, Creator> reader{factory};
     reader.readFromFile(base_name + ext);
 
@@ -185,13 +184,15 @@ int main (int argc, char** argv)
 #endif
 
 #if HAVE_DUNE_ALUGRID
+  // Test VtkWriter for ALUGrid.
   reader_writer_test<ALUGridType<2>, SerialGridCreator<ALUGridType<2>>>(mpi, test, "ALUGridType<2>");
-  reader_writer_test<ALUGridType<3>, SerialGridCreator<ALUGridType<3>>>(mpi, test, "ALUGridType<3>");
+  reader_writer_test<ALUGridType<2>, ParallelGridCreator<ALUGridType<2>>>(mpi, test, "ALUGridType<2, Parallel>", false);
 
-  if (HasParallelGridFactory<ALUGridType<2>>{})
-    reader_writer_test<ALUGridType<2>, ParallelGridCreator<ALUGridType<2>>>(mpi, test, "ALUGridType<2, Parallel>", false);
-  if (HasParallelGridFactory<ALUGridType<3>>{})
-    reader_writer_test<ALUGridType<3>, ParallelGridCreator<ALUGridType<3>>>(mpi, test, "ALUGridType<3, Parallel>", false);
+  reader_writer_test<ALUGridType<3>, SerialGridCreator<ALUGridType<3>>>(mpi, test, "ALUGridType<3>");
+  #if DUNE_VERSION_LT(DUNE_GRID,2,7)
+  // Currently the 2.7 branch is not working, due to a new bisection compatibility check in 3d
+  reader_writer_test<ALUGridType<3>, ParallelGridCreator<ALUGridType<3>>>(mpi, test, "ALUGridType<3, Parallel>", false);
+  #endif
 #endif
 
   return test.exit();
diff --git a/src/test/reader_writer_test.cc b/src/test/reader_writer_test.cc
index 99b3b88e2eda706ab719c7966a4c672533135002..f0051fc40e5c43cb129bb4b4e88f170e69e9231c 100644
--- a/src/test/reader_writer_test.cc
+++ b/src/test/reader_writer_test.cc
@@ -91,19 +91,10 @@ void writer_test (GridView const& gridView)
   }
 }
 
-template <class G> struct IsALUGrid : std::false_type {};
-#if DUNE_VERSION_GT(DUNE_GRID,2,6) && HAVE_DUNE_ALUGRID
-template<int dim, int dimworld, Dune::ALUGridElementType elType, Dune::ALUGridRefinementType refineType, class Comm>
-struct IsALUGrid<Dune::ALUGrid<dim,dimworld,elType,refineType,Comm>> : std::true_type {};
-#endif
-
 template <class Grid, class Test>
 void reader_test (MPIHelper& mpi, Test& test)
 {
   std::string ext = ".vtu";
-  if (mpi.size() > 1)
-    ext = ".pvtu";
-
   for (auto const& test_case : test_cases) {
     std::vector<std::string> pieces1, pieces2;
 
@@ -112,11 +103,8 @@ void reader_test (MPIHelper& mpi, Test& test)
       VtkReader<Grid> reader{factory};
       reader.readFromFile("reader_writer_test_" + std::get<0>(test_case) + ext);
 
-      std::unique_ptr<Grid> grid{ Hybrid::ifElse(IsALUGrid<Grid>{},
-        [&](auto id) { return id(factory).createGrid(std::true_type{}); },
-        [&](auto id) { return id(factory).createGrid(); }) };
-      pieces1 = mpi.size() > 1 ? reader.pieces() :
-        std::vector<std::string>{"reader_writer_test_" + std::get<0>(test_case) + ".vtu"};
+      std::unique_ptr<Grid> grid{factory.createGrid()};
+      pieces1 = reader.pieces();
 
       VtkUnstructuredGridWriter<typename Grid::LeafGridView> vtkWriter(grid->leafGridView(),
         std::get<1>(test_case), std::get<2>(test_case));
@@ -127,8 +115,7 @@ void reader_test (MPIHelper& mpi, Test& test)
       GridFactory<Grid> factory2;
       VtkReader<Grid> reader2{factory2};
       reader2.readFromFile("reader_writer_test_" + std::get<0>(test_case) + "_2" + ext, false);
-      pieces2 = mpi.size() > 1 ? reader2.pieces() :
-        std::vector<std::string>{"reader_writer_test_" + std::get<0>(test_case) + "_2.vtu"};
+      pieces2 = reader2.pieces();
     }
 
     test.check(pieces1.size() == pieces2.size(), "pieces1.size == pieces2.size");
@@ -153,7 +140,6 @@ int main (int argc, char** argv)
 
 #if HAVE_UG
   // Test VtkWriter for UGGrid
-  if (mpi.size() == 1) {
   Hybrid::forEach(std::make_tuple(int_<2>{}, int_<3>{}), [&test,&mpi](auto dim)
   {
     using GridType = UGGrid<dim.value>;
@@ -169,11 +155,9 @@ int main (int argc, char** argv)
 
     reader_test<GridType>(mpi,test);
   });
-  }
 #endif
 
-// DUNE_VERSION_LT(DUNE_GRID,2,7) &&
-#if  HAVE_DUNE_ALUGRID
+#if DUNE_VERSION_LT(DUNE_GRID,2,7) && HAVE_DUNE_ALUGRID
   // Test VtkWriter for ALUGrid. Currently the 2.7 branch is not working.
   Hybrid::forEach(std::make_tuple(int_<2>{}, int_<3>{}), [&test,&mpi](auto dim)
   {