diff --git a/.ci/docker/Dockerfile b/.ci/docker/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..f01cb4620f0b9ef0e7f8b011bc301f7aa9a76082
--- /dev/null
+++ b/.ci/docker/Dockerfile
@@ -0,0 +1,7 @@
+ARG BASE
+FROM dunecommunity/$BASE
+
+ADD . ${SUPERDIR}/${MY_MODULE}/
+RUN cd ${SUPERDIR} && \
+    echo ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} all && \
+    ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} all
diff --git a/.codecov.yml b/.codecov.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b11d3bc2d592f637695e91a3bc39f36b0a376653
--- /dev/null
+++ b/.codecov.yml
@@ -0,0 +1,29 @@
+codecov:
+  notify:
+    require_ci_to_pass: yes
+
+coverage:
+  precision: 2
+  round: down
+  range: "70...100"
+
+  # https://docs.codecov.io/docs/commit-status
+  status:
+    project: no
+    patch: no
+    changes: no
+
+parsers:
+  gcov:
+    branch_detection:
+      conditional: yes
+      loop: yes
+      method: no
+      macro: no
+
+# https://docs.codecov.io/docs/pull-request-comments
+# https://docs.codecov.io/docs/graphs
+comment:
+  layout: "header, files "
+  behavior: once
+  require_changes: yes
diff --git a/.gitsuper b/.gitsuper
index d3b13adede08cc1bf515906cae8dd33ce5936820..b918b9785d5fb624556ecd5e5732d031c69ccea7 100644
--- a/.gitsuper
+++ b/.gitsuper
@@ -17,7 +17,7 @@ status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master)
 	+effefc7695eba0c0ca94fff0f93026b86501027e dune-xt-common (heads/master)
 	+3e3f3bf06e21cbbf3c0a559891b44c6f5d987d0f dune-xt-data (heads/master)
 	+f05aa7470ead4150ca7a91894cd2ad77dfcedc46 dune-xt-functions (heads/new-master)
-	+d4718940b4ab35f1630bca048e1a8ab040a3ff21 dune-xt-grid (heads/new-master)
+	+35afd2514bd4a6b4d0afff4381a54955c5226b0c dune-xt-grid (heads/new-master)
 	+f6904b69f9a3ee5d45ee824d3b244e59cfed7ff4 dune-xt-la (heads/master)
 	 09d0378f616b94d68bcdd9fc6114813181849ec0 scripts (heads/master)
 commit = 5f5841ee7a2dff290b98845c46262151752189c1
@@ -110,7 +110,7 @@ commit = f05aa7470ead4150ca7a91894cd2ad77dfcedc46
 [submodule.dune-xt-grid]
 remote = git@github.com:dune-community/dune-xt-grid.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = d4718940b4ab35f1630bca048e1a8ab040a3ff21
+commit = 35afd2514bd4a6b4d0afff4381a54955c5226b0c
 
 [submodule.dune-xt-la]
 remote = git@github.com:dune-community/dune-xt-la.git
diff --git a/.travis.after_script.bash b/.travis.after_script.bash
index a2470108795a71bdcbb9c9ba9252f3272b3abf08..8bdf19033aa3c54a50b9467bd12175b37d4683be 100755
--- a/.travis.after_script.bash
+++ b/.travis.after_script.bash
@@ -1,13 +1,4 @@
 #!/bin/bash
-#
-# ~~~
-# This file is part of the dune-xt-grid project:
-#   https://github.com/dune-community/dune-xt-grid
-# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
-# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
-# Authors:
-#   Rene Milk (2017 - 2018)
-# ~~~
 
 # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT **********
 # this file is treated as a jinja2 template
diff --git a/.travis.make_env_file.py b/.travis.make_env_file.py
index 65c6aa2dbe6da60e8b7c7eada003c88f2dfbfb88..e77c120910f8c5cb251fa582f8fd6e920c7a3128 100644
--- a/.travis.make_env_file.py
+++ b/.travis.make_env_file.py
@@ -1,20 +1,11 @@
 #!/usr/bin/env python3
-#
-# ~~~
-# This file is part of the dune-xt-grid project:
-#   https://github.com/dune-community/dune-xt-grid
-# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
-# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
-# Authors:
-#   Rene Milk (2017 - 2018)
-# ~~~
 
 import os
 from os.path import expanduser
 from shlex import quote
 home = expanduser("~")
 
-prefixes = os.environ.get('ENV_PREFIXES', 'TRAVIS CI encrypt TOKEN TESTS').split(' ')
+prefixes = os.environ.get('ENV_PREFIXES', 'TRAVIS DRONE GITLAB CODECOV CI encrypt TOKEN TESTS').split(' ')
 blacklist = ['TRAVIS_COMMIT_MESSAGE']
 env_file = os.environ.get('ENV_FILE', os.path.join(home, 'env'))
 with open(env_file, 'wt') as env:
diff --git a/.travis.script.bash b/.travis.script.bash
index c535ae70612d4059b70a682835943d68a693af53..a9484b0d6e7c6c474922e98cf6f50dd7311a1cbc 100755
--- a/.travis.script.bash
+++ b/.travis.script.bash
@@ -1,14 +1,4 @@
 #!/bin/bash
-#
-# ~~~
-# This file is part of the dune-xt-grid project:
-#   https://github.com/dune-community/dune-xt-grid
-# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
-# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
-# Authors:
-#   Felix Schindler (2017)
-#   Rene Milk       (2017 - 2018)
-# ~~~
 
 # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT **********
 # this file is treated as a jinja2 template
@@ -41,4 +31,21 @@ fi
 ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} install | grep -v "Installing"
 ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} package_source
 
+# clang coverage currently disabled for being to mem hungry
+if [[ ${CC} == *"clang"* ]] ; then
+    exit 0
+fi
+
+pushd ${DUNE_BUILD_DIR}/${MY_MODULE}
+COVERAGE_INFO=${PWD}/coverage.info
+lcov --directory . --output-file ${COVERAGE_INFO} -c
+for d in "dune-common" "dune-pybindxi" "dune-geometry"  "dune-istl"  "dune-grid" "dune-alugrid"  "dune-uggrid"  "dune-localfunctions" ; do
+    lcov --directory . --output-file ${COVERAGE_INFO} -r ${COVERAGE_INFO} "${SUPERDIR}/${d}/*"
+done
+lcov --directory . --output-file ${COVERAGE_INFO} -r ${COVERAGE_INFO} "${SUPERDIR}/${MY_MODULE}/dune/xt/*/test/*"
+cd ${SUPERDIR}/${MY_MODULE}
+${OLDPWD}/dune-env pip install codecov
+${OLDPWD}/dune-env codecov -v -X gcov -X coveragepy -F ctest -f ${COVERAGE_INFO} -t ${CODECOV_TOKEN}
+popd
+
 # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT **********
\ No newline at end of file
diff --git a/.travis.test_python.bash b/.travis.test_python.bash
index 73e37a2d86d3c3c93eb6a851ae52507c68752de1..93c8e211dfd0315f7f7beda5fcfc1f2847593ffe 100755
--- a/.travis.test_python.bash
+++ b/.travis.test_python.bash
@@ -1,13 +1,4 @@
 #!/bin/bash
-#
-# ~~~
-# This file is part of the dune-xt-grid project:
-#   https://github.com/dune-community/dune-xt-grid
-# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
-# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
-# Authors:
-#   Rene Milk (2018)
-# ~~~
 
 # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT **********
 # this file is treated as a jinja2 template
@@ -20,7 +11,11 @@ source ${SUPERDIR}/scripts/bash/retry_command.bash
 
 ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} configure
 ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD}
-${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} bindings
-${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} test_python
+${WAIT} ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} bindings
+${WAIT} ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} test_python
+
+cd ${SUPERDIR}/${MY_MODULE}
+${DUNE_BUILD_DIR}/${MY_MODULE}/dune-env pip install codecov
+${DUNE_BUILD_DIR}/${MY_MODULE}/dune-env codecov -X gcov -F pytest -t ${CODECOV_TOKEN}
 
 # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT **********
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 460cd122c106ca3d591cb6a2a8f5cbc5e94c7d56..76b76006939745f97f8dc147441c9b09ba10532a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,54 +1,54 @@
-# ~~~
 # This file is part of the dune-xt-grid project:
 #   https://github.com/dune-community/dune-xt-grid
-# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
+# Copyright 2009-2017 dune-xt-functions developers and contributors. All rights reserved.
 # License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
+#      or  GPL-2.0+ (http://opensource.org/licenses/gpl-license)
+#          with "runtime exception" (http://www.dune-project.org/license.html)
 # Authors:
 #   Felix Schindler (2016 - 2017)
-#   Rene Milk       (2016 - 2018)
+#   Rene Milk       (2016 - 2017)
 #   Tobias Leibner  (2016)
-#
-#      or  GPL-2.0+ (http://opensource.org/licenses/gpl-license)
-#          with "runtime exception" (http://www.dune-project.org/license.html)
-# ~~~
 
 #   THIS FILE IS AUTOGENERATED -- DO NOT EDIT  #
 #  Re-run .ci/templates/update.py --nd instead #
 
-sudo: false
+sudo: true
 dist: trusty
 language: generic
 services: docker
 
 before_script:
-    - export IMAGE="dunecommunity/dune-xt-grid-testing_${DOCKER_TAG}:${TRAVIS_BRANCH}"
+    - export MY_MODULE=dune-xt-grid
+    - export BASEIMAGE="${MY_MODULE}-testing_${DOCKER_TAG}:${TRAVIS_BRANCH/\//_}"
+    - export IMAGE="dunecommunity/ci_${MY_MODULE}-testing_${DOCKER_TAG}:${TRAVIS_COMMIT}"
     # get image with fallback to master branch of the super repo
-    - docker pull ${IMAGE} || export IMAGE="dunecommunity/dune-xt-grid-testing_${DOCKER_TAG}:master" ; docker pull ${IMAGE}
+    - docker pull dunecommunity/${BASEIMAGE} || export BASEIMAGE="${MY_MODULE}-testing_${DOCKER_TAG}:master" ; docker pull dunecommunity/${BASEIMAGE}
+    - docker build --build-arg BASE=${BASEIMAGE} -t ${IMAGE} -f .ci/docker/Dockerfile .
+
     - export ENV_FILE=${HOME}/env
     - python3 ./.travis.make_env_file.py
-    - export MY_MODULE=dune-xt-grid
-    - export DOCKER_RUN="docker run --env-file ${ENV_FILE} -v ${TRAVIS_BUILD_DIR}:/root/src/dune-xt-grid ${IMAGE}"
+    - docker inspect ${IMAGE}
+    - export DOCKER_RUN="docker run --env-file ${ENV_FILE} ${IMAGE}"
 
 script:
-    - ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.script.bash
+    - ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.script.bash
 
 # runs independent of 'script' failure/success
 after_script:
-    - ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.after_script.bash
+    - ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.after_script.bash
     # output for simpler replicability
     - docker images ${IMAGE}
     - echo ${DOCKER_RUN}
 
+after_failure:
+    - echo $DOCKER_PW | docker login --username="$DOCKER_USER" --password-stdin
+    - docker push ${IMAGE}
+    - echo "execute\n ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.script.bash\n to examine errors"
 
 notifications:
   email:
     on_success: change
     on_failure: change
-  webhooks:
-    - https://buildtimetrend.herokuapp.com/travis
-
-#after_success:
-#- coveralls
 
 branches:
   except:
@@ -60,26 +60,42 @@ stages:
 
 jobs:
   include:
+  - stage: test_cpp
+    env: DOCKER_TAG=debian-unstable_gcc_full TESTS=0
+  - stage: test_cpp
+    env: DOCKER_TAG=debian-unstable_gcc_full TESTS=1
+  - stage: test_cpp
+    env: DOCKER_TAG=debian-unstable_gcc_full TESTS=2
+    
   - stage: test_cpp
     env: DOCKER_TAG=debian_gcc_full TESTS=0
   - stage: test_cpp
     env: DOCKER_TAG=debian_gcc_full TESTS=1
+  - stage: test_cpp
+    env: DOCKER_TAG=debian_gcc_full TESTS=2
     
   - stage: test_cpp
     env: DOCKER_TAG=debian_clang_full TESTS=0
   - stage: test_cpp
     env: DOCKER_TAG=debian_clang_full TESTS=1
+  - stage: test_cpp
+    env: DOCKER_TAG=debian_clang_full TESTS=2
     
+  - stage: test_python
+    env: DOCKER_TAG=debian-unstable_gcc_full
+    script: ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.test_python.bash
+    # overwrite other global/matrix settings
+    after_script: true
   - stage: test_python
     env: DOCKER_TAG=debian_gcc_full
-    script: ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.test_python.bash
+    script: ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.test_python.bash
     # overwrite other global/matrix settings
     after_script: true
   - stage: test_python
     env: DOCKER_TAG=debian_clang_full
-    script: ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.test_python.bash
+    script: ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.test_python.bash
     # overwrite other global/matrix settings
     after_script: true
 
 #   THIS FILE IS AUTOGENERATED -- DO NOT EDIT  #
-#  Re-run .ci/templates/update.py --nd instead #
+#  Re-run .ci/templates/update.py --nd instead #
\ No newline at end of file
diff --git a/dune/xt/grid/dd/subdomains/factory.hh b/dune/xt/grid/dd/subdomains/factory.hh
index a3441c850836e527574e441bcd2fdb37431cd38a..53e9113d2f183a3a370cc21e668dc026aa355125 100644
--- a/dune/xt/grid/dd/subdomains/factory.hh
+++ b/dune/xt/grid/dd/subdomains/factory.hh
@@ -911,7 +911,7 @@ struct SubdomainGridFactory<GridType>::Add<c, c>
     // loop over all codim c subentities of this entity
     for (unsigned int i = 0; i < entity.subEntities(c); ++i) {
       const auto codimCentity = entity.template subEntity<c>(i);
-      const SubdomainGridFactory<GridType>::GeometryType& geometryType = codimCentity.type();
+      const typename SubdomainGridFactory<GridType>::GeometryType& geometryType = codimCentity.type();
       const typename SubdomainGridFactory<GridType>::IndexType globalIndex =
           factory.globalGridView_->indexSet().index(codimCentity);
       factory.addGeometryAndIndex(geometryMap, localCodimSizes, geometryType, globalIndex);
diff --git a/dune/xt/grid/gridprovider/cube.hh b/dune/xt/grid/gridprovider/cube.hh
index b31c84fdffdacd3a8912a24421d0677667942487..11d74001cf342a634460919227bc5d23f17aea47 100644
--- a/dune/xt/grid/gridprovider/cube.hh
+++ b/dune/xt/grid/gridprovider/cube.hh
@@ -139,7 +139,8 @@ public:
          const FieldVector<typename GridType::ctype, GridType::dimension>& upper_right,
          const std::array<unsigned int, GridType::dimension>& num_elements,
          const unsigned int num_refinements,
-         const std::array<unsigned int, GridType::dimension>& overlap_size)
+         const std::array<unsigned int, GridType::dimension>& overlap_size,
+         MPIHelper::MPICommunicator mpi_comm)
   {
     static const int variant = ElementVariant<GridType>::id;
     static_assert(variant == 1 || variant == 2, "variant has to be 1 or 2!");
@@ -153,11 +154,13 @@ public:
     std::shared_ptr<GridType> grd_ptr(nullptr);
     switch (variant) {
       case 1:
-        grd_ptr = StructuredGridFactory<GridType>::createCubeGrid(lower_left, upper_right, num_elements, overlap_size);
+        grd_ptr = XT::Grid::StructuredGridFactory<GridType>::createCubeGrid(
+            lower_left, upper_right, num_elements, overlap_size, mpi_comm);
         break;
       case 2:
       default:
-        grd_ptr = StructuredGridFactory<GridType>::createSimplexGrid(lower_left, upper_right, num_elements);
+        grd_ptr = XT::Grid::StructuredGridFactory<GridType>::createSimplexGrid(
+            lower_left, upper_right, num_elements, mpi_comm);
         break;
     }
     grd_ptr->loadBalance();
@@ -174,24 +177,22 @@ public:
     return GridProvider<GridType, none_t>(grd_ptr);
   } // ... create(...)
 
-  static GridProvider<GridType, none_t>
-  create(const typename GridType::ctype& lower_left,
-         const typename GridType::ctype& upper_right,
-         const unsigned int num_elements =
-             cube_gridprovider_default_config().template get<std::vector<unsigned int>>("num_elements").at(0),
-         const unsigned int num_refinements =
-             cube_gridprovider_default_config().template get<unsigned int>("num_refinements"),
-         const unsigned int overlap_size =
-             cube_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size").at(0))
+  static GridProvider<GridType, none_t> create(const typename GridType::ctype& lower_left,
+                                               const typename GridType::ctype& upper_right,
+                                               const unsigned int num_elements,
+                                               const unsigned int num_refinements,
+                                               const unsigned int overlap_size,
+                                               MPIHelper::MPICommunicator mpi_comm)
   {
     return create(FieldVector<typename GridType::ctype, GridType::dimension>(lower_left),
                   FieldVector<typename GridType::ctype, GridType::dimension>(upper_right),
                   Common::make_array<unsigned int, GridType::dimension>(num_elements),
                   num_refinements,
-                  Common::make_array<unsigned int, GridType::dimension>(overlap_size));
+                  Common::make_array<unsigned int, GridType::dimension>(overlap_size),
+                  mpi_comm);
   } // ... create(...)
 
-  static GridProvider<GridType, none_t> create(const Common::Configuration& cfg = cube_gridprovider_default_config())
+  static GridProvider<GridType, none_t> create(const Common::Configuration& cfg, MPIHelper::MPICommunicator mpi_comm)
   {
     static const size_t d = GridType::dimension;
     auto overlap_size =
@@ -232,7 +233,7 @@ public:
     }
     auto num_refinements =
         cfg.get("num_refinements", cube_gridprovider_default_config().template get<unsigned int>("num_refinements"));
-    return create(lower_left, upper_right, num_elements_array, num_refinements, overlap_size_array);
+    return create(lower_left, upper_right, num_elements_array, num_refinements, overlap_size_array, mpi_comm);
   } // ... create(...)
 }; // struct CubeGridProviderFactory
 
@@ -246,10 +247,11 @@ typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>
     const unsigned int num_refinements =
         cube_gridprovider_default_config().template get<unsigned int>("num_refinements"),
     const std::array<unsigned int, GridType::dimension> overlap_size =
-        cube_gridprovider_default_config().template get<std::array<unsigned int, GridType::dimension>>("overlap_size"))
+        cube_gridprovider_default_config().template get<std::array<unsigned int, GridType::dimension>>("overlap_size"),
+    MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
   return CubeGridProviderFactory<GridType>::create(
-      lower_left, upper_right, num_elements, num_refinements, overlap_size);
+      lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm);
 }
 
 
@@ -262,18 +264,20 @@ make_cube_grid(const typename GridType::ctype& lower_left,
                const unsigned int num_refinements =
                    cube_gridprovider_default_config().template get<unsigned int>("num_refinements"),
                const unsigned int overlap_size =
-                   cube_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size").at(0))
+                   cube_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size").at(0),
+               MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
   return CubeGridProviderFactory<GridType>::create(
-      lower_left, upper_right, num_elements, num_refinements, overlap_size);
+      lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm);
 }
 
 
 template <class GridType>
 typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type
-make_cube_grid(const Common::Configuration& cfg = cube_gridprovider_default_config())
+make_cube_grid(const Common::Configuration& cfg = cube_gridprovider_default_config(),
+               MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
-  return CubeGridProviderFactory<GridType>::create(cfg);
+  return CubeGridProviderFactory<GridType>::create(cfg, mpi_comm);
 }
 
 
@@ -297,8 +301,8 @@ public:
     return cube_dd_subdomains_gridprovider_default_config();
   }
 
-  static GridProvider<GridType, DdGridType>
-  create(const Common::Configuration& cfg = cube_dd_subdomains_gridprovider_default_config())
+  static GridProvider<GridType, DdGridType> create(const Common::Configuration& cfg,
+                                                   MPIHelper::MPICommunicator mpi_comm)
   {
     const auto default_cfg = cube_dd_subdomains_gridprovider_default_config();
     return create(
@@ -311,7 +315,8 @@ public:
         cfg.get("overlap_size", default_cfg.get<std::array<unsigned int, GridType::dimension>>("overlap_size")),
         cfg.get("num_partitions", default_cfg.get<std::array<unsigned int, GridType::dimension>>("num_partitions")),
         cfg.get("oversampling_layers", default_cfg.get<size_t>("oversampling_layers")),
-        cfg.get("inner_boundary_segment_index", default_cfg.get<size_t>("inner_boundary_segment_index")));
+        cfg.get("inner_boundary_segment_index", default_cfg.get<size_t>("inner_boundary_segment_index")),
+        mpi_comm);
   }
 
   static GridProvider<GridType, DdGridType>
@@ -322,10 +327,11 @@ public:
          const std::array<unsigned int, GridType::dimension>& overlap_size,
          const std::array<unsigned int, GridType::dimension>& num_partitions,
          const size_t num_oversampling_layers,
-         const size_t inner_boundary_segment_index)
+         const size_t inner_boundary_segment_index,
+         MPIHelper::MPICommunicator mpi_comm)
   {
-    auto grid =
-        make_cube_grid<GridType>(lower_left, upper_right, num_elements, num_refinements, overlap_size).grid_ptr();
+    auto grid = make_cube_grid<GridType>(lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm)
+                    .grid_ptr();
     grid->loadBalance();
     const auto dims = XT::Grid::dimensions(grid->leafGridView());
     const auto bounding_box = dims.bounding_box();
@@ -392,7 +398,8 @@ make_cube_dd_subdomains_grid(
     const size_t num_oversampling_layers =
         cube_dd_subdomains_gridprovider_default_config().template get<size_t>("num_refinements"),
     const size_t inner_boundary_segment_index =
-        cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index"))
+        cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index"),
+    MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
   return CubeDdSubdomainsGridProviderFactory<GridType>::create(lower_left,
                                                                upper_right,
@@ -401,14 +408,16 @@ make_cube_dd_subdomains_grid(
                                                                overlap_size,
                                                                num_partitions,
                                                                num_oversampling_layers,
-                                                               inner_boundary_segment_index);
+                                                               inner_boundary_segment_index,
+                                                               mpi_comm);
 }
 
 template <class GridType>
 typename std::enable_if<XT::Grid::is_grid<GridType>::value, GridProvider<GridType, DD::SubdomainGrid<GridType>>>::type
-make_cube_dd_subdomains_grid(const Common::Configuration& cfg = cube_dd_subdomains_gridprovider_default_config())
+make_cube_dd_subdomains_grid(const Common::Configuration& cfg = cube_dd_subdomains_gridprovider_default_config(),
+                             MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
-  return CubeDdSubdomainsGridProviderFactory<GridType>::create(cfg);
+  return CubeDdSubdomainsGridProviderFactory<GridType>::create(cfg, mpi_comm);
 }
 
 
diff --git a/dune/xt/grid/gridprovider/dgf.hh b/dune/xt/grid/gridprovider/dgf.hh
index ff9be69f40302794c99c2dcc8740e52e5102c936..012d907874d8bb68527721be04a5a7a3b658c229 100644
--- a/dune/xt/grid/gridprovider/dgf.hh
+++ b/dune/xt/grid/gridprovider/dgf.hh
@@ -68,31 +68,32 @@ public:
     return cfg;
   }
 
-  static GridProvider<GridType, none_t> create(const std::string& filename)
+  static GridProvider<GridType, none_t> create(const std::string& filename, MPIHelper::MPICommunicator mpi_comm)
   {
-    return GridProvider<GridType, none_t>(GridPtr<GridType>(filename).release());
+    return GridProvider<GridType, none_t>(GridPtr<GridType>(filename, mpi_comm).release());
   }
 
-  static GridProvider<GridType, none_t> create(const Common::Configuration& cfg = default_config())
+  static GridProvider<GridType, none_t> create(const Common::Configuration& cfg, MPIHelper::MPICommunicator mpi_comm)
   {
-    return create(cfg.get("filename", default_config().template get<std::string>("filename")));
+    return create(cfg.get("filename", default_config().template get<std::string>("filename")), mpi_comm);
   }
 }; // class DgfGridProviderFactory
 
 
 template <class GridType>
 typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type
-make_dgf_grid(const std::string& filename)
+make_dgf_grid(const std::string& filename, MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
-  return DgfGridProviderFactory<GridType>(filename);
+  return DgfGridProviderFactory<GridType>(filename, mpi_comm);
 }
 
 
 template <class GridType>
 typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type
-make_dgf_grid(const Common::Configuration& cfg = DgfGridProviderFactory<GridType>::default_config())
+make_dgf_grid(const Common::Configuration& cfg = DgfGridProviderFactory<GridType>::default_config(),
+              MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
 {
-  return DgfGridProviderFactory<GridType>::create(cfg);
+  return DgfGridProviderFactory<GridType>::create(cfg, mpi_comm);
 }
 
 
diff --git a/dune/xt/grid/gridprovider/factory.hh b/dune/xt/grid/gridprovider/factory.hh
index 8279bf5f4b8616849d68b5839bc1bf5532cb1e3b..bb42f0b51f881cc02e5bd90557542c269bcbf3d2 100644
--- a/dune/xt/grid/gridprovider/factory.hh
+++ b/dune/xt/grid/gridprovider/factory.hh
@@ -18,6 +18,7 @@
 
 #include <dune/xt/common/configuration.hh>
 #include <dune/xt/common/type_traits.hh>
+#include <dune/xt/common/print.hh>
 
 #include "cube.hh"
 #include "dgf.hh"
@@ -31,94 +32,21 @@ namespace Grid {
 template <class GridType>
 class GridProviderFactory
 {
-  template <class G, bool available = false>
-  struct Helper
-  {
-    static std::vector<std::string> append(std::vector<std::string> in)
-    {
-      return in;
-    }
-
-    static bool compare(const std::string& /*type*/)
-    {
-      return false;
-    }
-
-    static Common::Configuration default_config()
-    {
-      DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!");
-      return Common::Configuration();
-    }
-
-    static GridProvider<GridType, none_t> create(const Common::Configuration& /*cfg*/)
-    {
-      DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!");
-      return GridProvider<GridType, none_t>(nullptr);
-    }
-  }; // struct Helper
-
-  template <class G>
-  struct Helper<G, true>
-  {
-    static std::vector<std::string> append(std::vector<std::string> in)
-    {
-      in.push_back(G::static_id());
-      return in;
-    }
-
-    static bool compare(const std::string& type)
-    {
-      return type == G::static_id();
-    }
-
-    static Common::Configuration default_config()
-    {
-      return G::default_config();
-    }
-
-    static GridProvider<GridType, none_t> create(const Common::Configuration& cfg)
-    {
-      if (cfg.empty())
-        return G::create();
-      else
-        return G::create(cfg);
-    }
-  }; // struct Helper< ..., true >
-
-  template <class G>
-  static std::vector<std::string> call_append(std::vector<std::string> in)
-  {
-    return Helper<G, G::available>::append(in);
-  }
-
   template <class G>
-  static bool call_compare(const std::string& type)
+  static GridProvider<GridType, none_t> call_create(const Common::Configuration& cfg,
+                                                    MPIHelper::MPICommunicator mpi_comm)
   {
-    return Helper<G, G::available>::compare(type);
-  }
-
-  template <class G>
-  static Common::Configuration call_default_config(const std::string sub_name)
-  {
-    return Helper<G, G::available>::default_config(sub_name);
-  }
-
-  template <class G>
-  static GridProvider<GridType, none_t> call_create(const Common::Configuration& cfg)
-  {
-    return Helper<G, G::available>::create(cfg);
+    if (cfg.empty())
+      return G::create(G::default_config(), mpi_comm);
+    else
+      return G::create(cfg, mpi_comm);
   }
 
   static std::string available_as_str()
   {
-    std::string ret = "";
-    const auto vals = available();
-    if (vals.size() > 0) {
-      ret += vals[0];
-      for (size_t ii = 1; ii < vals.size(); ++ii)
-        ret += "\n   " + vals[ii];
-    }
-    return ret;
+    std::stringstream ret;
+    std::copy(available().begin(), available().end(), Common::PrefixOutputIterator<std::string>(ret, "\n   "));
+    return ret.str();
   } // ... available_as_str(...)
 
   typedef CubeGridProviderFactory<GridType> CubeType;
@@ -128,21 +56,20 @@ class GridProviderFactory
 public:
   static std::vector<std::string> available()
   {
-    std::vector<std::string> ret;
-    call_append<CubeType>(ret);
-    call_append<DgfType>(ret);
-    call_append<GmshType>(ret);
+    std::vector<std::string> ret{CubeType::static_id(), DgfType::static_id()};
+    if (GmshType::available)
+      ret.push_back(GmshType::static_id());
     return ret;
   }
 
   static Common::Configuration default_config(const std::string type)
   {
-    if (call_compare<CubeType>(type))
-      return call_default_config<CubeType>();
-    else if (call_compare<DgfType>(type))
-      return call_default_config<DgfType>();
-    else if (call_compare<GmshType>(type))
-      return call_default_config<GmshType>();
+    if (CubeType::static_id() == type)
+      return CubeType::default_config();
+    else if (DgfType::static_id() == type)
+      return DgfType::default_config();
+    else if (GmshType::static_id() == type)
+      return GmshType::default_config();
     else if (available().empty())
       DUNE_THROW(Common::Exceptions::wrong_input_given,
                  "There is no grid provider available for " << Common::Typename<GridType>::value() << "!");
@@ -154,20 +81,22 @@ public:
                                     << available_as_str());
   } // ... default_config(...)
 
-  static GridProvider<GridType, none_t> create(const Common::Configuration& config)
+  static GridProvider<GridType, none_t> create(const Common::Configuration& config,
+                                               MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
   {
-    return create(config.get<std::string>("type"), config);
+    return create(config.get<std::string>("type"), config, mpi_comm);
   }
 
   static GridProvider<GridType, none_t> create(const std::string& type = available()[0],
-                                               const Common::Configuration config = Common::Configuration())
-  {
-    if (call_compare<CubeType>(type))
-      return call_create<CubeType>(config);
-    else if (call_compare<DgfType>(type))
-      return call_create<DgfType>(config);
-    else if (call_compare<GmshType>(type))
-      return call_create<GmshType>(config);
+                                               const Common::Configuration config = Common::Configuration(),
+                                               MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
+  {
+    if (CubeType::static_id() == type)
+      return call_create<CubeType>(config, mpi_comm);
+    else if (DgfType::static_id() == type)
+      return call_create<DgfType>(config, mpi_comm);
+    else if (GmshType::static_id() == type)
+      return call_create<GmshType>(config, mpi_comm);
     else if (available().empty())
       DUNE_THROW(Common::Exceptions::wrong_input_given,
                  "There is no grid provider available for " << Common::Typename<GridType>::value() << "!");
@@ -184,94 +113,21 @@ public:
 template <class GridType>
 class DdSubdomainGridProviderFactory
 {
-  template <class G, bool available = false>
-  struct Helper
-  {
-    static std::vector<std::string> append(std::vector<std::string> in)
-    {
-      return in;
-    }
-
-    static bool compare(const std::string& /*type*/)
-    {
-      return false;
-    }
-
-    static Common::Configuration default_config()
-    {
-      DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!");
-      return Common::Configuration();
-    }
-
-    static GridProvider<GridType, DD::SubdomainGrid<GridType>> create(const Common::Configuration& /*cfg*/)
-    {
-      DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!");
-      return GridProvider<GridType, DD::SubdomainGrid<GridType>>(nullptr);
-    }
-  }; // struct Helper
-
-  template <class G>
-  struct Helper<G, true>
-  {
-    static std::vector<std::string> append(std::vector<std::string> in)
-    {
-      in.push_back(G::static_id());
-      return in;
-    }
-
-    static bool compare(const std::string& type)
-    {
-      return type == G::static_id();
-    }
-
-    static Common::Configuration default_config()
-    {
-      return G::default_config();
-    }
-
-    static GridProvider<GridType, DD::SubdomainGrid<GridType>> create(const Common::Configuration& cfg)
-    {
-      if (cfg.empty())
-        return G::create();
-      else
-        return G::create(cfg);
-    }
-  }; // struct Helper< ..., true >
-
-  template <class G>
-  static std::vector<std::string> call_append(std::vector<std::string> in)
-  {
-    return Helper<G, G::available>::append(in);
-  }
-
   template <class G>
-  static bool call_compare(const std::string& type)
+  static GridProvider<GridType, DD::SubdomainGrid<GridType>> call_create(const Common::Configuration& cfg,
+                                                                         MPIHelper::MPICommunicator mpi_comm)
   {
-    return Helper<G, G::available>::compare(type);
-  }
-
-  template <class G>
-  static Common::Configuration call_default_config(const std::string sub_name)
-  {
-    return Helper<G, G::available>::default_config(sub_name);
-  }
-
-  template <class G>
-  static GridProvider<GridType, DD::SubdomainGrid<GridType>> call_create(const Common::Configuration& cfg)
-  {
-    return Helper<G, G::available>::create(cfg);
+    if (cfg.empty())
+      return G::create(G::default_config(), mpi_comm);
+    else
+      return G::create(cfg, mpi_comm);
   }
 
   static std::string available_as_str()
   {
-    std::string ret = "";
-    const auto vals = available();
-    if (vals.size() > 0) {
-      ret += vals[0];
-      for (size_t ii = 1; ii < vals.size(); ++ii)
-        ret += "\n   " + vals[ii];
-    }
-    return ret;
+    std::stringstream ret;
+    std::copy(available().begin(), available().end(), Common::PrefixOutputIterator<std::string>(ret, "\n   "));
+    return ret.str();
   } // ... available_as_str(...)
 
   typedef CubeDdSubdomainsGridProviderFactory<GridType> CubeType;
@@ -279,14 +135,13 @@ class DdSubdomainGridProviderFactory
 public:
   static std::vector<std::string> available()
   {
-    std::vector<std::string> ret;
-    return call_append<CubeType>(ret);
+    return std::vector<std::string>{CubeType::static_id()};
   }
 
   static Common::Configuration default_config(const std::string type)
   {
-    if (call_compare<CubeType>(type))
-      return call_default_config<CubeType>();
+    if (CubeType::static_id() == type)
+      return CubeType::default_config();
     else if (available().empty())
       DUNE_THROW(Common::Exceptions::wrong_input_given,
                  "There is no grid provider available for " << Common::Typename<GridType>::value() << "!");
@@ -298,16 +153,19 @@ public:
                                     << available_as_str());
   } // ... default_config(...)
 
-  static GridProvider<GridType, DD::SubdomainGrid<GridType>> create(const Common::Configuration& config)
+  static GridProvider<GridType, DD::SubdomainGrid<GridType>>
+  create(const Common::Configuration& config, MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
   {
-    return create(config.get<std::string>("type"), config);
+    return create(config.get<std::string>("type"), config, mpi_comm);
   }
 
   static GridProvider<GridType, DD::SubdomainGrid<GridType>>
-  create(const std::string& type = available()[0], const Common::Configuration config = Common::Configuration())
+  create(const std::string& type = available()[0],
+         const Common::Configuration config = Common::Configuration(),
+         MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
   {
-    if (call_compare<CubeType>(type))
-      return call_create<CubeType>(config);
+    if (CubeType::static_id() == type)
+      return call_create<CubeType>(config, mpi_comm);
     else if (available().empty())
       DUNE_THROW(Common::Exceptions::wrong_input_given,
                  "There is no grid provider available for " << Common::Typename<GridType>::value() << "!");
diff --git a/dune/xt/grid/gridprovider/gmsh.hh b/dune/xt/grid/gridprovider/gmsh.hh
index c711564e9fb78b3c9f61dfc1d2c76bebcaeac63a..5ee7b7da0b0219dbb6570a268d99927af8cca147 100644
--- a/dune/xt/grid/gridprovider/gmsh.hh
+++ b/dune/xt/grid/gridprovider/gmsh.hh
@@ -50,12 +50,27 @@ static inline Common::Configuration gmsh_gridprovider_default_config()
 template <class GridType>
 class GmshGridProviderFactory;
 
-
+//! Gmsh grid creation relies on unstructured grid factory -> disable yasp
 template <int dim, class Coordinates>
 class GmshGridProviderFactory<Dune::YaspGrid<dim, Coordinates>>
 {
 public:
   static const bool available = false;
+
+  static std::string static_id()
+  {
+    return "dune.xt.grid.none_t";
+  }
+
+  static Common::Configuration default_config()
+  {
+    DUNE_THROW(NotImplemented, "No default config for GmshGridProviderFactory Yaspgrid");
+  }
+  template <class... Args>
+  static GridProvider<Dune::YaspGrid<dim, Coordinates>, none_t> create(Args&&...)
+  {
+    DUNE_THROW(NotImplemented, "No create impleneted for GmshGridProviderFactory Yaspgrid");
+  }
 };
 
 
@@ -82,18 +97,37 @@ public:
     return cfg;
   }
 
-  static GridProvider<GridType, none_t> create(const std::string& filename)
+  static GridProvider<GridType, none_t> create(const std::string& filename, MPIHelper::MPICommunicator mpi_comm)
   {
+    DUNE_THROW_IF(CollectiveCommunication<MPIHelper::MPICommunicator>(mpi_comm).size() > 1,
+                  InvalidStateException,
+                  "Gmsh reading not implemented in parallel");
     return GridProvider<GridType, none_t>(GmshReader<GridType>::read(filename));
   }
 
-  static GridProvider<GridType, none_t> create(const Common::Configuration& cfg = default_config())
+  static GridProvider<GridType, none_t> create(const Common::Configuration& cfg, MPIHelper::MPICommunicator mpi_comm)
   {
-    return create(cfg.get("filename", default_config().template get<std::string>("filename")));
+    return create(cfg.get("filename", default_config().template get<std::string>("filename")), mpi_comm);
   }
 }; // class GmshGridProviderFactory
 
 
+template <class GridType>
+typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type
+make_gmsh_grid(const std::string& filename, MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
+{
+  return GmshGridProviderFactory<GridType>(filename, mpi_comm);
+}
+
+
+template <class GridType>
+typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type
+make_gmsh_grid(const Common::Configuration& cfg = GmshGridProviderFactory<GridType>::default_config(),
+               MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator())
+{
+  return GmshGridProviderFactory<GridType>::create(cfg, mpi_comm);
+}
+
 } // namespace Grid
 } // namespace XT
 } // namespace Dune
diff --git a/dune/xt/grid/structuredgridfactory.hh b/dune/xt/grid/structuredgridfactory.hh
index a794b8c7e15a457dd94072a43771ca90a2cb945e..bc79e9d2c3aad66a3f919d7ab70d9dcebd541243 100644
--- a/dune/xt/grid/structuredgridfactory.hh
+++ b/dune/xt/grid/structuredgridfactory.hh
@@ -24,8 +24,21 @@
 #include <dune/grid/spgrid.hh>
 #endif
 
+#if HAVE_ALBERTA
+#include <dune/grid/albertagrid.hh>
+#endif
+
+#if HAVE_DUNE_ALUGRID
+#include <dune/alugrid/common/structuredgridfactory.hh>
+#endif
+
+#if HAVE_DUNE_UGGRID
+#include <dune/grid/uggrid.hh>
+#endif
+
 #include <dune/xt/common/float_cmp.hh>
 #include <dune/xt/common/ranges.hh>
+#include <dune/xt/common/logging.hh>
 
 namespace Dune {
 
@@ -128,11 +141,129 @@ public:
                  const Dune::FieldVector<ctype, GridType::dimension>& upperRight,
                  const Dune::array<unsigned int, GridType::dimension>& elements,
                  Dune::array<unsigned int, GridType::dimension> /*overlap*/ = default_overlap<GridType>(),
-                 Dune::MPIHelper::MPICommunicator /*communicator*/ = Dune::MPIHelper::getCommunicator())
+                 Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator())
+  {
+    return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements, mpi_comm);
+  }
+};
+
+#if HAVE_DUNE_UGGRID
+template <int dim>
+class StructuredGridFactory<UGGrid<dim>> : public Dune::StructuredGridFactory<UGGrid<dim>>
+{
+  typedef UGGrid<dim> GridType;
+  typedef typename GridType::ctype ctype;
+
+public:
+  static std::shared_ptr<GridType>
+  createCubeGrid(const Dune::FieldVector<ctype, GridType::dimension>& lowerLeft,
+                 const Dune::FieldVector<ctype, GridType::dimension>& upperRight,
+                 const Dune::array<unsigned int, GridType::dimension>& elements,
+                 Dune::array<unsigned int, GridType::dimension> = default_overlap<GridType>(),
+                 Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator())
+  {
+    if (Dune::MPIHelper::isFake)
+      return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+#if HAVE_MPI
+    if (mpi_comm == MPI_COMM_WORLD)
+      return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+#endif
+    DUNE_THROW(InvalidStateException, "Alberta construction cannot handle non-world communicators");
+  }
+
+  static std::shared_ptr<GridType>
+  createSimplexGrid(const Dune::FieldVector<ctype, dim>& lowerLeft,
+                    const Dune::FieldVector<ctype, dim>& upperRight,
+                    const Dune::array<unsigned int, dim>& elements,
+                    Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator())
+  {
+    if (Dune::MPIHelper::isFake)
+      return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements);
+#if HAVE_MPI
+    if (mpi_comm == MPI_COMM_WORLD)
+      return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements);
+#endif
+    DUNE_THROW(InvalidStateException, "UGGRid construction cannot handle non-world communicators");
+  }
+};
+#endif // HAVE_DUNE_UGGRID
+
+#if HAVE_ALBERTA
+template <int dim>
+class StructuredGridFactory<AlbertaGrid<dim, dim>> : public Dune::StructuredGridFactory<AlbertaGrid<dim, dim>>
+{
+  typedef AlbertaGrid<dim, dim> GridType;
+  typedef typename GridType::ctype ctype;
+
+public:
+  static std::shared_ptr<GridType>
+  createCubeGrid(const Dune::FieldVector<ctype, GridType::dimension>& lowerLeft,
+                 const Dune::FieldVector<ctype, GridType::dimension>& upperRight,
+                 const Dune::array<unsigned int, GridType::dimension>& elements,
+                 Dune::array<unsigned int, GridType::dimension> overlap = default_overlap<GridType>(),
+                 Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator())
+  {
+    bool warn = false;
+    unsigned int sum = 0;
+    for (auto i : Common::value_range(1, dim)) {
+      warn = warn || (overlap[i] > 1);
+      sum += overlap[i];
+    }
+    if (warn || sum >= dim)
+      DXTC_LOG_INFO << "Ignoring non-default overlap for alberta cube creation";
+    if (Dune::MPIHelper::isFake)
+      return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+#if HAVE_MPI
+    if (mpi_comm == MPI_COMM_WORLD)
+      return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+#endif
+    DUNE_THROW(InvalidStateException, "Alberta construction cannot handle non-world communicators");
+  }
+
+  static std::shared_ptr<GridType>
+  createSimplexGrid(const Dune::FieldVector<ctype, dim>& lowerLeft,
+                    const Dune::FieldVector<ctype, dim>& upperRight,
+                    const Dune::array<unsigned int, dim>& elements,
+                    Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator())
   {
-    return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+    if (Dune::MPIHelper::isFake)
+      return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements);
+#if HAVE_MPI
+    if (mpi_comm == MPI_COMM_WORLD)
+      return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements);
+#endif
+    DUNE_THROW(InvalidStateException, "Alberta construction cannot handle non-world communicators");
   }
 };
+#endif // HAVE_ALBERTA
+
+
+#if HAVE_DUNE_ALUGRID
+template <int dim_world, int dim, ALUGridRefinementType refineType, class Comm>
+class StructuredGridFactory<ALUGrid<dim, dim_world, Dune::cube, refineType, Comm>>
+    : public Dune::StructuredGridFactory<ALUGrid<dim, dim_world, Dune::cube, refineType, Comm>>
+{
+  typedef ALUGrid<dim, dim_world, Dune::cube, refineType, Comm> GridType;
+  typedef typename GridType::ctype ctype;
+
+public:
+  static std::shared_ptr<GridType>
+  createCubeGrid(const Dune::FieldVector<ctype, GridType::dimension>& lowerLeft,
+                 const Dune::FieldVector<ctype, GridType::dimension>& upperRight,
+                 const Dune::array<unsigned int, GridType::dimension>& elements,
+                 Dune::array<unsigned int, GridType::dimension> = default_overlap<GridType>(),
+                 Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator())
+  {
+    if (Dune::MPIHelper::isFake)
+      return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+#if HAVE_MPI
+    if (mpi_comm == MPI_COMM_WORLD)
+      return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements);
+#endif
+    DUNE_THROW(InvalidStateException, "ALUgrid Cube construction cannot handle non-world communicators");
+  }
+};
+#endif // HAVE_ALBERTA
 
 #if HAVE_DUNE_SPGRID
 template <class ct, int dim, template <int> class Refinement, class Comm>
@@ -155,7 +286,7 @@ public:
   }
 };
 
-#endif
+#endif // HAVE_DUNE_SPGRID
 
 template <int dim, class Coords>
 class StructuredGridFactory<Dune::YaspGrid<dim, Coords>>
@@ -183,6 +314,14 @@ public:
         DUNE_THROW(Dune::InvalidStateException, "YaspGrid only supports uniform overlap");
     return std::make_shared<GridType>(lowerLeft, upperRight, elements, no_periodic_direction, overlap[0], communicator);
   }
+  static std::shared_ptr<GridType>
+  createSimplexGrid(const Dune::FieldVector<ctype, GridType::dimension>&,
+                    const Dune::FieldVector<ctype, GridType::dimension>&,
+                    const array<unsigned int, GridType::dimension>&,
+                    Dune::MPIHelper::MPICommunicator = Dune::MPIHelper::getCommunicator())
+  {
+    DUNE_THROW(NotImplemented, "YaspGrid does not provide Simplex Geometries");
+  }
 };
 
 } // namespace Grid
diff --git a/dune/xt/grid/test/builder_definitions.cmake b/dune/xt/grid/test/builder_definitions.cmake
index 1ac16a84c9053f5c286bf45ee15cd4a27e4bc45d..361a00a9ac4db3e7c97af373755fa70ce35e202e 100644
--- a/dune/xt/grid/test/builder_definitions.cmake
+++ b/dune/xt/grid/test/builder_definitions.cmake
@@ -1,99 +1,101 @@
-set(DXT_BIN_COUNT "2" CACHE STRING "number of bins for test targets" )
-add_custom_target(test_binaries_builder_0 DEPENDS headercheck__dune_xt_grid_boundaryinfo.hh headercheck__dune_xt_grid_boundaryinfo_boundarysegment.hh headercheck__dune_xt_grid_boundaryinfo_normalbased.hh headercheck__dune_xt_grid_boundaryinfo_types.hh headercheck__dune_xt_grid_capabilities.hh headercheck__dune_xt_grid_dd_glued.hh headercheck__dune_xt_grid_dd_subdomains_factory.hh headercheck__dune_xt_grid_dd_subdomains_grid.hh headercheck__dune_xt_grid_exceptions.hh headercheck__dune_xt_grid_gridprovider_cube.lib.hh headercheck__dune_xt_grid_gridprovider_dgf.hh headercheck__dune_xt_grid_gridprovider_eoc.hh headercheck__dune_xt_grid_gridprovider_factory.hh headercheck__dune_xt_grid_gridprovider_provider.lib.hh headercheck__dune_xt_grid_grids.hh headercheck__dune_xt_grid_intersection.hh headercheck__dune_xt_grid_layers.hh headercheck__dune_xt_grid_output_pgf.hh headercheck__dune_xt_grid_parallel_partitioning_ranged-internal.hh headercheck__dune_xt_grid_test_dd_glued.hh headercheck__dune_xt_grid_view_from-part.hh headercheck__dune_xt_grid_walk_functors.hh headercheck__dune_xt_grid_walker.hh headercheck__dune_xt_grid_walker_apply-on.hh headercheck__dune_xt_grid_walker_functors.hh headercheck__dune_xt_grid_walker_wrapper.hh headercheck__python_dune_xt_grid_gridprovider.hh headercheck__python_dune_xt_grid_walker.bindings.hh test_boundaryinfo_factory_alberta_1d test_boundaryinfo_factory_alberta_3d test_boundaryinfo_factory_alu_2d_0000 test_boundaryinfo_factory_alu_2d_0002 test_boundaryinfo_factory_alu_3d_0000 test_boundaryinfo_factory_alu_3d_0002 test_boundaryinfo_factory_yasp_2d test_cube_gridprovider_alberta_1d test_cube_gridprovider_alberta_2d test_cube_gridprovider_alberta_3d test_cube_gridprovider_alu_2d_0000 test_cube_gridprovider_alu_3d_0000 test_cube_gridprovider_alu_3d_0001 test_cube_gridprovider_ug_2d test_cube_gridprovider_yasp_1d test_cube_gridprovider_yasp_2d test_dd_glued_3d test_dd_subdomains_cube_1d_yasp_1d test_dd_subdomains_cube_2d_alu_2d_0000 test_dd_subdomains_cube_2d_alu_2d_0002 test_dd_subdomains_cube_2d_yasp_2d test_dd_subdomains_cube_3d_alberta_3d test_dd_subdomains_cube_3d_alu_3d_0001 test_dd_subdomains_cube_3d_alu_3d_0002 test_dgf_gridprovider_alu_2d_0000 test_dgf_gridprovider_alu_2d_0001 test_dgf_gridprovider_alu_3d_0000 test_dgf_gridprovider_alu_3d_0001 test_dgf_gridprovider_yasp_2d test_dgf_gridprovider_yasp_3d test_empty test_gmsh_gridprovider_alu_2d_0002 test_information_1d test_information_2d test_periodic_gridview_alberta_2d test_periodic_gridview_alu_2d_0000 test_periodic_gridview_alu_3d_0002 test_periodic_gridview_yasp_2d test_periodic_gridview_yasp_3d test_search_alberta_2d test_search_alu_2d_0000 test_search_alu_3d_0001 test_search_alu_3d_0002 test_search_ug_2d test_search_ug_3d test_search_yasp_1d test_search_yasp_2d)
-set_tests_properties(test_boundaryinfo_factory_alberta_1d_0003 PROPERTIES LABELS "builder_0")
+set(DXT_BIN_COUNT "3" CACHE STRING "number of bins for test targets" )
+add_custom_target(test_binaries_builder_0 DEPENDS headercheck__dune_xt_grid_boundaryinfo.hh headercheck__dune_xt_grid_boundaryinfo_factory.hh headercheck__dune_xt_grid_boundaryinfo_normalbased.hh headercheck__dune_xt_grid_entity.hh headercheck__dune_xt_grid_gridprovider.hh headercheck__dune_xt_grid_gridprovider_cube.hh headercheck__dune_xt_grid_gridprovider_factory.hh headercheck__dune_xt_grid_gridprovider_gmsh.hh headercheck__dune_xt_grid_intersection.hh headercheck__dune_xt_grid_parallel_partitioning_ranged-internal.hh headercheck__dune_xt_grid_test_provider.hh headercheck__dune_xt_grid_type_traits.hh headercheck__dune_xt_grid_view_subdomain_intersection-wrapper.hh headercheck__dune_xt_grid_view_subdomain_view.hh headercheck__dune_xt_grid_walk_functors.hh headercheck__dune_xt_grid_walker.lib.hh headercheck__dune_xt_grid_walker_functors.hh headercheck__python_dune_xt_grid_layers.bindings.hh headercheck__python_dune_xt_grid_walker.bindings.hh test_boundaryinfo_factory_alberta_2d test_boundaryinfo_factory_alberta_3d test_boundaryinfo_factory_alu_2d_0002 test_boundaryinfo_factory_alu_3d_0002 test_boundaryinfo_factory_yasp_2d test_cube_gridprovider_alu_2d_0000 test_cube_gridprovider_alu_3d_0001 test_cube_gridprovider_ug_2d test_dd_glued_3d test_dd_subdomains_cube_1d_yasp_1d test_dd_subdomains_cube_2d_alu_2d_0000 test_dd_subdomains_cube_2d_yasp_2d test_dd_subdomains_cube_3d_alu_3d_0001 test_dd_subdomains_cube_3d_yasp_3d test_dgf_gridprovider_alberta_1d test_dgf_gridprovider_alberta_2d test_dgf_gridprovider_alberta_3d test_dgf_gridprovider_yasp_1d test_empty test_eoc_gridprovider test_gmsh_gridprovider_alu_2d_0000 test_gmsh_gridprovider_alu_2d_0001 test_gmsh_gridprovider_alu_2d_0002 test_gmsh_gridprovider_alu_3d_0000 test_periodic_gridview_alu_2d_0000 test_periodic_gridview_ug_2d test_periodic_gridview_yasp_1d test_periodic_gridview_yasp_2d test_periodic_gridview_yasp_3d test_search_alberta_2d test_search_alu_2d_0002 test_search_alu_3d_0000)
+set_tests_properties(test_boundaryinfo_factory_alberta_2d_0004 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_boundaryinfo_factory_alberta_3d_0005 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_boundaryinfo_factory_alu_2d_0000_0006 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_boundaryinfo_factory_alu_2d_0002_0008 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_boundaryinfo_factory_alu_3d_0000_0009 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_boundaryinfo_factory_alu_3d_0002_0011 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_boundaryinfo_factory_yasp_2d_0001 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_cube_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_cube_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_cube_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_cube_gridprovider_alu_2d_0000_0006 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_cube_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_cube_gridprovider_alu_3d_0001_0010 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_cube_gridprovider_ug_2d_0012 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_cube_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_cube_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_dd_glued_3d PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dd_subdomains_cube_1d_yasp_1d_0001 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_dd_subdomains_cube_1d_yasp_1d_0000 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0000_0002 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0002_0004 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_dd_subdomains_cube_2d_yasp_2d_0000 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dd_subdomains_cube_3d_alberta_3d_0001 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0001_0003 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0002_0004 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dgf_gridprovider_alu_2d_0000_0006 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dgf_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dgf_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dgf_gridprovider_alu_3d_0001_0010 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dgf_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_dgf_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_dd_subdomains_cube_3d_yasp_3d_0000 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_dgf_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_dgf_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_dgf_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_dgf_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_empty PROPERTIES LABELS "builder_0")
+set_tests_properties(test_eoc_gridprovider PROPERTIES LABELS "builder_0")
+set_tests_properties(test_gmsh_gridprovider_alu_2d_0000_0000 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_gmsh_gridprovider_alu_2d_0001_0001 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_gmsh_gridprovider_alu_2d_0002_0002 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_information_1d_information_1d PROPERTIES LABELS "builder_0")
-set_tests_properties(test_information_2d_information_2d PROPERTIES LABELS "builder_0")
-set_tests_properties(test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_gmsh_gridprovider_alu_3d_0000_0003 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003 test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003 test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003 test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003 test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003 test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001 test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001 test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001 test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001 test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001 test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002 test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002 test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002 test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002 test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002 test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002 PROPERTIES LABELS "builder_0")
 set_tests_properties(test_search_alberta_2d_0004 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_alu_2d_0000_0006 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_alu_3d_0001_0010 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_alu_3d_0002_0011 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_ug_2d_0012 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_ug_3d_0013 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_yasp_1d_0000 PROPERTIES LABELS "builder_0")
-set_tests_properties(test_search_yasp_2d_0001 PROPERTIES LABELS "builder_0")
-add_custom_target(test_binaries_builder_1 DEPENDS headercheck__dune_xt_grid_boundaryinfo_alldirichlet.hh headercheck__dune_xt_grid_boundaryinfo_allneumann.hh headercheck__dune_xt_grid_boundaryinfo_allreflecting.hh headercheck__dune_xt_grid_boundaryinfo_factory.hh headercheck__dune_xt_grid_boundaryinfo_interfaces.hh headercheck__dune_xt_grid_entity.hh headercheck__dune_xt_grid_gridprovider.hh headercheck__dune_xt_grid_gridprovider_cube.hh headercheck__dune_xt_grid_gridprovider_gmsh.hh headercheck__dune_xt_grid_gridprovider_provider.hh headercheck__dune_xt_grid_gridprovider_starcd.hh headercheck__dune_xt_grid_information.hh headercheck__dune_xt_grid_output_entity_visualization.hh headercheck__dune_xt_grid_parallel_partitioning_ranged.hh headercheck__dune_xt_grid_rangegenerators.hh headercheck__dune_xt_grid_search.hh headercheck__dune_xt_grid_structuredgridfactory.hh headercheck__dune_xt_grid_test_provider.hh headercheck__dune_xt_grid_type_traits.hh headercheck__dune_xt_grid_view_periodic.hh headercheck__dune_xt_grid_view_subdomain_entity-iterator.hh headercheck__dune_xt_grid_view_subdomain_indexset.hh headercheck__dune_xt_grid_view_subdomain_intersection-iterator.hh headercheck__dune_xt_grid_view_subdomain_intersection-wrapper.hh headercheck__dune_xt_grid_view_subdomain_view.hh headercheck__dune_xt_grid_walker.lib.hh headercheck__python_dune_xt_grid_boundaryinfo.bindings.hh headercheck__python_dune_xt_grid_grids.bindings.hh headercheck__python_dune_xt_grid_layers.bindings.hh test_boundaryinfo_factory_alberta_2d test_boundaryinfo_factory_alu_2d_0001 test_boundaryinfo_factory_alu_3d_0001 test_boundaryinfo_factory_ug_2d test_boundaryinfo_factory_ug_3d test_boundaryinfo_factory_yasp_1d test_boundaryinfo_factory_yasp_3d test_cube_gridprovider_alu_2d_0001 test_cube_gridprovider_alu_2d_0002 test_cube_gridprovider_alu_3d_0002 test_cube_gridprovider_ug_3d test_cube_gridprovider_yasp_3d test_dd_glued_2d test_dd_subdomains_cube_1d_alberta_1d test_dd_subdomains_cube_1d_oned_1d test_dd_subdomains_cube_2d_alberta_2d test_dd_subdomains_cube_2d_alu_2d_0001 test_dd_subdomains_cube_3d_alu_3d_0000 test_dd_subdomains_cube_3d_yasp_3d test_dgf_gridprovider_alberta_1d test_dgf_gridprovider_alberta_2d test_dgf_gridprovider_alberta_3d test_dgf_gridprovider_alu_2d_0002 test_dgf_gridprovider_alu_3d_0002 test_dgf_gridprovider_ug_2d test_dgf_gridprovider_ug_3d test_dgf_gridprovider_yasp_1d test_gmsh_gridprovider_alu_2d_0000 test_gmsh_gridprovider_alu_2d_0001 test_gmsh_gridprovider_alu_3d_0000 test_gmsh_gridprovider_alu_3d_0001 test_gmsh_gridprovider_alu_3d_0002 test_information_3d test_output_pgf test_periodic_gridview_alberta_1d test_periodic_gridview_alberta_3d test_periodic_gridview_alu_2d_0001 test_periodic_gridview_alu_2d_0002 test_periodic_gridview_alu_3d_0000 test_periodic_gridview_alu_3d_0001 test_periodic_gridview_ug_2d test_periodic_gridview_ug_3d test_periodic_gridview_yasp_1d test_search_alberta_1d test_search_alberta_3d test_search_alu_2d_0001 test_search_alu_2d_0002 test_search_alu_3d_0000 test_search_yasp_3d)
-set_tests_properties(test_boundaryinfo_factory_alberta_2d_0004 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_boundaryinfo_factory_alu_2d_0001_0007 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_search_alu_2d_0002_0008 PROPERTIES LABELS "builder_0")
+set_tests_properties(test_search_alu_3d_0000_0009 PROPERTIES LABELS "builder_0")
+add_custom_target(test_binaries_builder_1 DEPENDS headercheck__dune_xt_grid_bound-object.hh headercheck__dune_xt_grid_boundaryinfo_alldirichlet.hh headercheck__dune_xt_grid_boundaryinfo_allneumann.hh headercheck__dune_xt_grid_boundaryinfo_boundarysegment.hh headercheck__dune_xt_grid_boundaryinfo_types.hh headercheck__dune_xt_grid_capabilities.hh headercheck__dune_xt_grid_dd_subdomains_grid.hh headercheck__dune_xt_grid_exceptions.hh headercheck__dune_xt_grid_gridprovider_eoc.hh headercheck__dune_xt_grid_gridprovider_provider.lib.hh headercheck__dune_xt_grid_gridprovider_starcd.hh headercheck__dune_xt_grid_output_entity_visualization.hh headercheck__dune_xt_grid_output_pgf.hh headercheck__dune_xt_grid_parallel_partitioning_ranged.hh headercheck__dune_xt_grid_structuredgridfactory.hh headercheck__dune_xt_grid_test_dd_glued.hh headercheck__dune_xt_grid_view_periodic.hh headercheck__dune_xt_grid_walker_wrapper.hh headercheck__python_dune_xt_grid_available_types.hh test_boundaryinfo_factory_alberta_1d test_boundaryinfo_factory_alu_2d_0000 test_boundaryinfo_factory_alu_3d_0001 test_boundaryinfo_factory_ug_3d test_boundaryinfo_factory_yasp_1d test_boundaryinfo_factory_yasp_3d test_cube_gridprovider_ug_3d test_cube_gridprovider_yasp_2d test_dd_glued_2d test_dd_subdomains_cube_2d_alberta_2d test_dd_subdomains_cube_2d_alu_2d_0001 test_dd_subdomains_cube_3d_alberta_3d test_dd_subdomains_cube_3d_alu_3d_0002 test_dgf_gridprovider_alu_2d_0000 test_dgf_gridprovider_alu_3d_0000 test_dgf_gridprovider_ug_3d test_dgf_gridprovider_yasp_3d test_gmsh_gridprovider_alu_3d_0001 test_gmsh_gridprovider_alu_3d_0002 test_information_3d test_periodic_gridview_alberta_1d test_periodic_gridview_alberta_3d test_periodic_gridview_alu_2d_0001 test_periodic_gridview_alu_3d_0000 test_search_alberta_1d test_search_alberta_3d test_search_alu_2d_0001 test_search_alu_3d_0001 test_search_alu_3d_0002 test_search_ug_3d test_search_yasp_1d test_search_yasp_2d test_walker)
+set_tests_properties(test_boundaryinfo_factory_alberta_1d_0003 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_boundaryinfo_factory_alu_2d_0000_0006 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_boundaryinfo_factory_alu_3d_0001_0010 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_boundaryinfo_factory_ug_2d_0012 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_boundaryinfo_factory_ug_3d_0013 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_boundaryinfo_factory_yasp_1d_0000 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_boundaryinfo_factory_yasp_3d_0002 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_cube_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_cube_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_cube_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_cube_gridprovider_ug_3d_0013 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_cube_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_cube_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_dd_glued_2d PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dd_subdomains_cube_1d_alberta_1d_0002 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dd_subdomains_cube_1d_oned_1d_0000 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_dd_subdomains_cube_2d_alberta_2d_0001 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0001_0003 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0000_0002 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dd_subdomains_cube_3d_yasp_3d_0000 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_ug_2d_0012 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_dd_subdomains_cube_3d_alberta_3d_0001 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0002_0004 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_dgf_gridprovider_alu_2d_0000_0006 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_dgf_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_dgf_gridprovider_ug_3d_0013 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_dgf_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_gmsh_gridprovider_alu_2d_0000_0000 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_gmsh_gridprovider_alu_2d_0001_0001 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_gmsh_gridprovider_alu_3d_0000_0003 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_dgf_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_gmsh_gridprovider_alu_3d_0001_0004 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_gmsh_gridprovider_alu_3d_0002_0005 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_information_3d_information_3d PROPERTIES LABELS "builder_1")
-set_tests_properties(test_output_pgf PROPERTIES LABELS "builder_1")
 set_tests_properties(test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000 test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000 test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000 test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000 test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000 test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002 test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002 test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002 test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002 test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002 test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003 test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003 test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003 test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003 test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003 test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004 test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004 test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004 test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004 test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004 test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_search_alberta_1d_0003 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_search_alberta_3d_0005 PROPERTIES LABELS "builder_1")
 set_tests_properties(test_search_alu_2d_0001_0007 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_search_alu_2d_0002_0008 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_search_alu_3d_0000_0009 PROPERTIES LABELS "builder_1")
-set_tests_properties(test_search_yasp_3d_0002 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_search_alu_3d_0001_0010 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_search_alu_3d_0002_0011 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_search_ug_3d_0013 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_search_yasp_1d_0000 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_search_yasp_2d_0001 PROPERTIES LABELS "builder_1")
+set_tests_properties(test_walker PROPERTIES LABELS "builder_1")
+add_custom_target(test_binaries_builder_2 DEPENDS headercheck__dune_xt_grid_boundaryinfo_allreflecting.hh headercheck__dune_xt_grid_boundaryinfo_interfaces.hh headercheck__dune_xt_grid_dd_glued.hh headercheck__dune_xt_grid_dd_subdomains_factory.hh headercheck__dune_xt_grid_gridprovider_cube.lib.hh headercheck__dune_xt_grid_gridprovider_dgf.hh headercheck__dune_xt_grid_gridprovider_provider.hh headercheck__dune_xt_grid_grids.hh headercheck__dune_xt_grid_information.hh headercheck__dune_xt_grid_layers.hh headercheck__dune_xt_grid_rangegenerators.hh headercheck__dune_xt_grid_search.hh headercheck__dune_xt_grid_view_from-part.hh headercheck__dune_xt_grid_view_subdomain_entity-iterator.hh headercheck__dune_xt_grid_view_subdomain_indexset.hh headercheck__dune_xt_grid_view_subdomain_intersection-iterator.hh headercheck__dune_xt_grid_walker.hh headercheck__dune_xt_grid_walker_apply-on.hh headercheck__python_dune_xt_grid_boundaryinfo.bindings.hh headercheck__python_dune_xt_grid_gridprovider.hh headercheck__python_dune_xt_grid_grids.bindings.hh test_boundaryinfo_factory_alu_2d_0001 test_boundaryinfo_factory_alu_3d_0000 test_boundaryinfo_factory_ug_2d test_cube_gridprovider_alberta_1d test_cube_gridprovider_alberta_2d test_cube_gridprovider_alberta_3d test_cube_gridprovider_alu_2d_0001 test_cube_gridprovider_alu_2d_0002 test_cube_gridprovider_alu_3d_0000 test_cube_gridprovider_alu_3d_0002 test_cube_gridprovider_yasp_1d test_cube_gridprovider_yasp_3d test_dd_subdomains_cube_1d_alberta_1d test_dd_subdomains_cube_2d_alu_2d_0002 test_dd_subdomains_cube_3d_alu_3d_0000 test_dgf_gridprovider_alu_2d_0001 test_dgf_gridprovider_alu_2d_0002 test_dgf_gridprovider_alu_3d_0001 test_dgf_gridprovider_alu_3d_0002 test_dgf_gridprovider_ug_2d test_dgf_gridprovider_yasp_2d test_information_1d test_information_2d test_output_pgf test_periodic_gridview_alberta_2d test_periodic_gridview_alu_2d_0002 test_periodic_gridview_alu_3d_0001 test_periodic_gridview_alu_3d_0002 test_periodic_gridview_ug_3d test_search_alu_2d_0000 test_search_ug_2d test_search_yasp_3d)
+set_tests_properties(test_boundaryinfo_factory_alu_2d_0001_0007 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_boundaryinfo_factory_alu_3d_0000_0009 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_boundaryinfo_factory_ug_2d_0012 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_cube_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dd_subdomains_cube_1d_alberta_1d_0001 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0002_0004 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0000_0002 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dgf_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dgf_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dgf_gridprovider_alu_3d_0001_0010 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dgf_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dgf_gridprovider_ug_2d_0012 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_dgf_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_information_1d_information_1d PROPERTIES LABELS "builder_2")
+set_tests_properties(test_information_2d_information_2d PROPERTIES LABELS "builder_2")
+set_tests_properties(test_output_pgf PROPERTIES LABELS "builder_2")
+set_tests_properties(test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_search_alu_2d_0000_0006 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_search_ug_2d_0012 PROPERTIES LABELS "builder_2")
+set_tests_properties(test_search_yasp_3d_0002 PROPERTIES LABELS "builder_2")
diff --git a/dune/xt/grid/test/dd_subdomains_cube_1d.mini b/dune/xt/grid/test/dd_subdomains_cube_1d.mini
index deff71bacecd3d0a72d64671d4253ea7061ee0dc..cdb8cde477f528ae857409ad8a383ecd0cca7e0b 100644
--- a/dune/xt/grid/test/dd_subdomains_cube_1d.mini
+++ b/dune/xt/grid/test/dd_subdomains_cube_1d.mini
@@ -3,13 +3,12 @@ __exec_suffix = {gridname}_{dimDomain}d
 dimDomain = 1
 
 __local.grid_yasp = Dune::YaspGrid<{dimDomain},Dune::EquidistantOffsetCoordinates<double,{dimDomain}>>
-__local.grid_oned = OneDGrid
 __local.grid_alberta = Dune::AlbertaGrid<{dimDomain},{dimDomain}>
 
-grid = {__local.grid_yasp}, {__local.grid_oned}, {__local.grid_alberta} | expand grid
-1, 1, HAVE_ALBERTA | expand grid | cmake_guard
+grid = {__local.grid_yasp}, {__local.grid_alberta} | expand grid
+1, HAVE_ALBERTA | expand grid | cmake_guard
 
-gridname = yasp, oned, alberta | expand grid
+gridname = yasp, alberta | expand grid
 
 [__static]
 TESTGRIDTYPE = {grid}
diff --git a/dune/xt/grid/test/mpi_grid.py b/dune/xt/grid/test/mpi_grid.py
new file mode 100644
index 0000000000000000000000000000000000000000..a80f334658a4b6c4d2a9b1179579beefa0a61ef1
--- /dev/null
+++ b/dune/xt/grid/test/mpi_grid.py
@@ -0,0 +1,5 @@
+import dune.xt.grid.types as grid_types
+from dune.xt.codegen import typeid_to_typedef_name as safe_name
+
+# alberta needs manual flag adding in cmake, so we skip it here
+all_grids = ((safe_name(g), g) for g in grid_types.all_types(cache, list(range(1, 4))) if 'Alberta' not in g)
diff --git a/dune/xt/grid/test/mpi_grid.tpl b/dune/xt/grid/test/mpi_grid.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..53980c31b1bac67f5ce4018774dfd8dbe7096b48
--- /dev/null
+++ b/dune/xt/grid/test/mpi_grid.tpl
@@ -0,0 +1,69 @@
+// This file is part of the dune-xt-grid project:
+//   https://github.com/dune-community/dune-xt-grid
+// Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
+// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
+//      or  GPL-2.0+ (http://opensource.org/licenses/gpl-license)
+//          with "runtime exception" (http://www.dune-project.org/license.html)
+// Authors:
+//   Rene Milk       (2018)
+
+#include <dune/xt/common/test/main.hxx>
+
+#include <dune/xt/grid/gridprovider/eoc.hh>
+#include <dune/xt/grid/grids.hh>
+#include <dune/grid/uggrid.hh>
+
+{% for name, type in config.all_grids %}
+
+#if HAVE_MPI
+GTEST_TEST(GridProvider_{{name}}, layers)
+{
+  using ProviderFactory = Dune::XT::Grid::GridProviderFactory<{{type}}>;
+  const auto type = ProviderFactory::available()[0];
+  const auto config = ProviderFactory::default_config(type);
+
+  int world_rank;
+  MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
+  MPI_Comm split_comm;
+  MPI_Comm_split(MPI_COMM_WORLD, world_rank, world_rank, &split_comm);
+
+  {% if "cube" in type or "UGGrid" in type %}
+    // uggrid + alu cube grids cannot handle non-default comms
+    EXPECT_THROW(ProviderFactory::create(config, split_comm), Dune::InvalidStateException);
+    return;
+  {% endif %}
+  auto local_provider = ProviderFactory::create(config, split_comm);
+  auto global_provider = ProviderFactory::create(config, MPI_COMM_WORLD);
+  auto& local_grid = local_provider.grid();
+  auto& global_grid = global_provider.grid();
+  auto& local_colcom = local_grid.comm();
+  auto& global_colcom = global_grid.comm();
+
+  const bool actually_parallel = global_grid.comm().size() > 1;
+  if(actually_parallel){
+    EXPECT_NE(local_colcom.size(), global_colcom.size());
+    EXPECT_GE(local_grid.size(0), global_grid.size(0));
+  }
+  else {
+    EXPECT_EQ(local_colcom.size(), global_colcom.size());
+    EXPECT_EQ(global_grid.size(0), local_grid.size(0));
+  }
+}
+#else
+GTEST_TEST(GridProvider_{{name}}, layers)
+{
+  using ProviderFactory = Dune::XT::Grid::GridProviderFactory<{{type}}>;
+  const auto type = ProviderFactory::available()[0];
+  const auto config = ProviderFactory::default_config(type);
+  auto local_provider = ProviderFactory::create(config, Dune::MPIHelper::getLocalCommunicator());
+  auto global_provider = ProviderFactory::create(config, Dune::MPIHelper::getCommunicator());
+  auto& local_grid = local_provider.grid();
+  auto& global_grid = global_provider.grid();
+  auto& local_colcom = local_grid.comm();
+  auto& global_colcom = global_grid.comm();
+
+  EXPECT_EQ(local_colcom.size(), global_colcom.size());
+  EXPECT_EQ(global_grid.size(0), local_grid.size(0));
+}
+#endif
+{% endfor %}
diff --git a/dune/xt/grid/test/periodic_gridview.cc b/dune/xt/grid/test/periodic_gridview.cc
index 3d857e63a7ead759e48c6978f587d1dd3a85a74f..1de003dd3971250bda4a9f204638934cada3f500 100644
--- a/dune/xt/grid/test/periodic_gridview.cc
+++ b/dune/xt/grid/test/periodic_gridview.cc
@@ -85,10 +85,12 @@ struct PeriodicViewTest : public testing::Test
     const IndexSet& index_set = periodic_grid_view.indexSet();
     const int codim0_size = periodic_grid_view.size(0);
     EXPECT_EQ(grid_view.size(0), codim0_size);
-    if (is_cube)
+    if (is_cube) {
       EXPECT_EQ(std::pow(elements_per_direction, dimDomain), codim0_size);
-    if (is_simplex)
+    }
+    if (is_simplex) {
       EXPECT_EQ(std::pow(elements_per_direction, dimDomain) * factorial(dimDomain), codim0_size);
+    }
     EXPECT_EQ(grid_view.overlapSize(0), periodic_grid_view.overlapSize(0));
     EXPECT_EQ(grid_view.overlapSize(1), periodic_grid_view.overlapSize(1));
     EXPECT_EQ(grid_view.ghostSize(0), periodic_grid_view.ghostSize(0));
diff --git a/dune/xt/grid/test/testruns_totals.pickle b/dune/xt/grid/test/testruns_totals.pickle
index b75ddbed43502a12337c25600f0c2799dcc5854e..28bb41b3e26861c7132768fe6dbedec6c8128f0d 100644
--- a/dune/xt/grid/test/testruns_totals.pickle
+++ b/dune/xt/grid/test/testruns_totals.pickle
@@ -1 +1 @@
-[["test_boundaryinfo_factory_yasp_1d_0000", "test_boundaryinfo_factory_yasp_2d_0001", "test_boundaryinfo_factory_yasp_3d_0002", "test_boundaryinfo_factory_alberta_1d_0003", "test_boundaryinfo_factory_alberta_2d_0004", "test_boundaryinfo_factory_alberta_3d_0005", "test_boundaryinfo_factory_alu_2d_0000_0006", "test_boundaryinfo_factory_alu_2d_0001_0007", "test_boundaryinfo_factory_alu_2d_0002_0008", "test_boundaryinfo_factory_alu_3d_0000_0009", "test_boundaryinfo_factory_alu_3d_0001_0010", "test_boundaryinfo_factory_alu_3d_0002_0011", "test_boundaryinfo_factory_ug_2d_0012", "test_boundaryinfo_factory_ug_3d_0013", "test_cube_gridprovider_yasp_1d_0000", "test_cube_gridprovider_yasp_2d_0001", "test_cube_gridprovider_yasp_3d_0002", "test_cube_gridprovider_alberta_1d_0003", "test_cube_gridprovider_alberta_2d_0004", "test_cube_gridprovider_alberta_3d_0005", "test_cube_gridprovider_alu_2d_0000_0006", "test_cube_gridprovider_alu_2d_0001_0007", "test_cube_gridprovider_alu_2d_0002_0008", "test_cube_gridprovider_alu_3d_0000_0009", "test_cube_gridprovider_alu_3d_0001_0010", "test_cube_gridprovider_alu_3d_0002_0011", "test_cube_gridprovider_ug_2d_0012", "test_cube_gridprovider_ug_3d_0013", "test_dd_glued_2d", "test_dd_glued_3d", "test_dd_subdomains_cube_1d_oned_1d_0000", "test_dd_subdomains_cube_1d_yasp_1d_0001", "test_dd_subdomains_cube_1d_alberta_1d_0002", "test_dd_subdomains_cube_2d_yasp_2d_0000", "test_dd_subdomains_cube_2d_alberta_2d_0001", "test_dd_subdomains_cube_2d_alu_2d_0000_0002", "test_dd_subdomains_cube_2d_alu_2d_0001_0003", "test_dd_subdomains_cube_2d_alu_2d_0002_0004", "test_dd_subdomains_cube_3d_yasp_3d_0000", "test_dd_subdomains_cube_3d_alberta_3d_0001", "test_dd_subdomains_cube_3d_alu_3d_0000_0002", "test_dd_subdomains_cube_3d_alu_3d_0001_0003", "test_dd_subdomains_cube_3d_alu_3d_0002_0004", "test_dgf_gridprovider_yasp_1d_0000", "test_dgf_gridprovider_yasp_2d_0001", "test_dgf_gridprovider_yasp_3d_0002", "test_dgf_gridprovider_alberta_1d_0003", "test_dgf_gridprovider_alberta_2d_0004", "test_dgf_gridprovider_alberta_3d_0005", "test_dgf_gridprovider_alu_2d_0000_0006", "test_dgf_gridprovider_alu_2d_0001_0007", "test_dgf_gridprovider_alu_2d_0002_0008", "test_dgf_gridprovider_alu_3d_0000_0009", "test_dgf_gridprovider_alu_3d_0001_0010", "test_dgf_gridprovider_alu_3d_0002_0011", "test_dgf_gridprovider_ug_2d_0012", "test_dgf_gridprovider_ug_3d_0013", "test_empty", "test_gmsh_gridprovider_alu_2d_0000_0000", "test_gmsh_gridprovider_alu_2d_0001_0001", "test_gmsh_gridprovider_alu_2d_0002_0002", "test_gmsh_gridprovider_alu_3d_0000_0003", "test_gmsh_gridprovider_alu_3d_0001_0004", "test_gmsh_gridprovider_alu_3d_0002_0005", "test_information_1d_information_1d", "test_information_2d_information_2d", "test_information_3d_information_3d", "test_output_pgf", "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000", "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001", "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002", "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000", "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001", "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002", "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003", "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003", "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004", "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004", "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005", "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006", "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007", "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008", "test_search_yasp_1d_0000", "test_search_yasp_2d_0001", "test_search_yasp_3d_0002", "test_search_alberta_1d_0003", "test_search_alberta_2d_0004", "test_search_alberta_3d_0005", "test_search_alu_2d_0000_0006", "test_search_alu_2d_0001_0007", "test_search_alu_2d_0002_0008", "test_search_alu_3d_0000_0009", "test_search_alu_3d_0001_0010", "test_search_alu_3d_0002_0011", "test_search_ug_2d_0012", "test_search_ug_3d_0013"], {"test_boundaryinfo_factory_alberta_1d_0003": 0.01879096031188965, "test_boundaryinfo_factory_alberta_2d_0004": 0.017849206924438477, "test_boundaryinfo_factory_alberta_3d_0005": 0.016821622848510742, "test_boundaryinfo_factory_alu_2d_0000_0006": 0.020161151885986328, "test_boundaryinfo_factory_alu_2d_0001_0007": 0.021579265594482422, "test_boundaryinfo_factory_alu_2d_0002_0008": 0.018848896026611328, "test_boundaryinfo_factory_alu_3d_0000_0009": 0.021801233291625977, "test_boundaryinfo_factory_alu_3d_0001_0010": 0.013073921203613281, "test_boundaryinfo_factory_alu_3d_0002_0011": 0.01934957504272461, "test_boundaryinfo_factory_ug_2d_0012": 0.06149005889892578, "test_boundaryinfo_factory_ug_3d_0013": 0.012807607650756836, "test_boundaryinfo_factory_yasp_1d_0000": 0.04857516288757324, "test_boundaryinfo_factory_yasp_2d_0001": 0.02437448501586914, "test_boundaryinfo_factory_yasp_3d_0002": 0.020878076553344727, "test_cube_gridprovider_alberta_1d_0003": 0.016344308853149414, "test_cube_gridprovider_alberta_2d_0004": 0.01675248146057129, "test_cube_gridprovider_alberta_3d_0005": 0.01607537269592285, "test_cube_gridprovider_alu_2d_0000_0006": 0.020139217376708984, "test_cube_gridprovider_alu_2d_0001_0007": 0.022524356842041016, "test_cube_gridprovider_alu_2d_0002_0008": 0.020697832107543945, "test_cube_gridprovider_alu_3d_0000_0009": 0.01953434944152832, "test_cube_gridprovider_alu_3d_0001_0010": 0.020487308502197266, "test_cube_gridprovider_alu_3d_0002_0011": 0.014725923538208008, "test_cube_gridprovider_ug_2d_0012": 0.013370037078857422, "test_cube_gridprovider_ug_3d_0013": 0.013493537902832031, "test_cube_gridprovider_yasp_1d_0000": 0.02048468589782715, "test_cube_gridprovider_yasp_2d_0001": 0.01860785484313965, "test_cube_gridprovider_yasp_3d_0002": 0.01403498649597168, "test_dd_glued_2d": 0.020163774490356445, "test_dd_glued_3d": 0.018154144287109375, "test_dd_subdomains_cube_1d_alberta_1d_0002": 0.015096187591552734, "test_dd_subdomains_cube_1d_oned_1d_0000": 0.01475834846496582, "test_dd_subdomains_cube_1d_yasp_1d_0001": 0.021187305450439453, "test_dd_subdomains_cube_2d_alberta_2d_0001": 0.014922618865966797, "test_dd_subdomains_cube_2d_alu_2d_0000_0002": 0.014841079711914062, "test_dd_subdomains_cube_2d_alu_2d_0001_0003": 0.014711856842041016, "test_dd_subdomains_cube_2d_alu_2d_0002_0004": 0.019779205322265625, "test_dd_subdomains_cube_2d_yasp_2d_0000": 0.015044212341308594, "test_dd_subdomains_cube_3d_alberta_3d_0001": 0.015231132507324219, "test_dd_subdomains_cube_3d_alu_3d_0000_0002": 0.01627326011657715, "test_dd_subdomains_cube_3d_alu_3d_0001_0003": 0.01916646957397461, "test_dd_subdomains_cube_3d_alu_3d_0002_0004": 0.017833232879638672, "test_dd_subdomains_cube_3d_yasp_3d_0000": 0.021175384521484375, "test_dgf_gridprovider_alberta_1d_0003": 0.014127731323242188, "test_dgf_gridprovider_alberta_2d_0004": 0.01454472541809082, "test_dgf_gridprovider_alberta_3d_0005": 0.014353275299072266, "test_dgf_gridprovider_alu_2d_0000_0006": 0.02131032943725586, "test_dgf_gridprovider_alu_2d_0001_0007": 0.02017378807067871, "test_dgf_gridprovider_alu_2d_0002_0008": 0.027289152145385742, "test_dgf_gridprovider_alu_3d_0000_0009": 0.021492481231689453, "test_dgf_gridprovider_alu_3d_0001_0010": 0.018991708755493164, "test_dgf_gridprovider_alu_3d_0002_0011": 0.025875091552734375, "test_dgf_gridprovider_ug_2d_0012": 0.013030052185058594, "test_dgf_gridprovider_ug_3d_0013": 0.013205289840698242, "test_dgf_gridprovider_yasp_1d_0000": 0.018175125122070312, "test_dgf_gridprovider_yasp_2d_0001": 0.017711162567138672, "test_dgf_gridprovider_yasp_3d_0002": 0.01462244987487793, "test_empty": 0.043166160583496094, "test_gmsh_gridprovider_alu_2d_0000_0000": 0.02014899253845215, "test_gmsh_gridprovider_alu_2d_0001_0001": 0.022755861282348633, "test_gmsh_gridprovider_alu_2d_0002_0002": 0.021397113800048828, "test_gmsh_gridprovider_alu_3d_0000_0003": 0.022572994232177734, "test_gmsh_gridprovider_alu_3d_0001_0004": 0.021507740020751953, "test_gmsh_gridprovider_alu_3d_0002_0005": 0.016646385192871094, "test_information_1d_information_1d": 0.015696048736572266, "test_information_2d_information_2d": 0.014620542526245117, "test_information_3d_information_3d": 0.022844552993774414, "test_output_pgf": 0.02042245864868164, "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000": 0.01412653923034668, "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001": 0.014034032821655273, "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002": 0.01592850685119629, "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003": 0.10288047790527344, "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003": 0.10729146003723145, "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004": 0.10921049118041992, "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004": 0.11465072631835938, "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005": 0.11975669860839844, "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006": 0.10587620735168457, "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007": 0.013364315032958984, "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008": 0.013238668441772461, "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000": 0.12091302871704102, "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001": 0.12057709693908691, "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002": 0.12546849250793457, "test_search_alberta_1d_0003": 0.014313936233520508, "test_search_alberta_2d_0004": 0.014206886291503906, "test_search_alberta_3d_0005": 0.014241695404052734, "test_search_alu_2d_0000_0006": 0.015004634857177734, "test_search_alu_2d_0001_0007": 0.02175450325012207, "test_search_alu_2d_0002_0008": 0.019686460494995117, "test_search_alu_3d_0000_0009": 0.018866539001464844, "test_search_alu_3d_0001_0010": 0.021307945251464844, "test_search_alu_3d_0002_0011": 0.018821001052856445, "test_search_ug_2d_0012": 0.013257026672363281, "test_search_ug_3d_0013": 0.01296544075012207, "test_search_yasp_1d_0000": 0.02102828025817871, "test_search_yasp_2d_0001": 0.019915103912353516, "test_search_yasp_3d_0002": 0.019326210021972656}]
\ No newline at end of file
+[["test_boundaryinfo_factory_yasp_1d_0000", "test_boundaryinfo_factory_yasp_2d_0001", "test_boundaryinfo_factory_yasp_3d_0002", "test_boundaryinfo_factory_alberta_1d_0003", "test_boundaryinfo_factory_alberta_2d_0004", "test_boundaryinfo_factory_alberta_3d_0005", "test_boundaryinfo_factory_alu_2d_0000_0006", "test_boundaryinfo_factory_alu_2d_0001_0007", "test_boundaryinfo_factory_alu_2d_0002_0008", "test_boundaryinfo_factory_alu_3d_0000_0009", "test_boundaryinfo_factory_alu_3d_0001_0010", "test_boundaryinfo_factory_alu_3d_0002_0011", "test_boundaryinfo_factory_ug_2d_0012", "test_boundaryinfo_factory_ug_3d_0013", "test_cube_gridprovider_yasp_1d_0000", "test_cube_gridprovider_yasp_2d_0001", "test_cube_gridprovider_yasp_3d_0002", "test_cube_gridprovider_alberta_1d_0003", "test_cube_gridprovider_alberta_2d_0004", "test_cube_gridprovider_alberta_3d_0005", "test_cube_gridprovider_alu_2d_0000_0006", "test_cube_gridprovider_alu_2d_0001_0007", "test_cube_gridprovider_alu_2d_0002_0008", "test_cube_gridprovider_alu_3d_0000_0009", "test_cube_gridprovider_alu_3d_0001_0010", "test_cube_gridprovider_alu_3d_0002_0011", "test_cube_gridprovider_ug_2d_0012", "test_cube_gridprovider_ug_3d_0013", "test_dd_glued_2d", "test_dd_glued_3d", "test_dd_subdomains_cube_1d_yasp_1d_0000", "test_dd_subdomains_cube_1d_alberta_1d_0001", "test_dd_subdomains_cube_2d_yasp_2d_0000", "test_dd_subdomains_cube_2d_alberta_2d_0001", "test_dd_subdomains_cube_2d_alu_2d_0000_0002", "test_dd_subdomains_cube_2d_alu_2d_0001_0003", "test_dd_subdomains_cube_2d_alu_2d_0002_0004", "test_dd_subdomains_cube_3d_yasp_3d_0000", "test_dd_subdomains_cube_3d_alberta_3d_0001", "test_dd_subdomains_cube_3d_alu_3d_0000_0002", "test_dd_subdomains_cube_3d_alu_3d_0001_0003", "test_dd_subdomains_cube_3d_alu_3d_0002_0004", "test_dgf_gridprovider_yasp_1d_0000", "test_dgf_gridprovider_yasp_2d_0001", "test_dgf_gridprovider_yasp_3d_0002", "test_dgf_gridprovider_alberta_1d_0003", "test_dgf_gridprovider_alberta_2d_0004", "test_dgf_gridprovider_alberta_3d_0005", "test_dgf_gridprovider_alu_2d_0000_0006", "test_dgf_gridprovider_alu_2d_0001_0007", "test_dgf_gridprovider_alu_2d_0002_0008", "test_dgf_gridprovider_alu_3d_0000_0009", "test_dgf_gridprovider_alu_3d_0001_0010", "test_dgf_gridprovider_alu_3d_0002_0011", "test_dgf_gridprovider_ug_2d_0012", "test_dgf_gridprovider_ug_3d_0013", "test_empty", "test_gmsh_gridprovider_alu_2d_0000_0000", "test_gmsh_gridprovider_alu_2d_0001_0001", "test_gmsh_gridprovider_alu_2d_0002_0002", "test_gmsh_gridprovider_alu_3d_0000_0003", "test_gmsh_gridprovider_alu_3d_0001_0004", "test_gmsh_gridprovider_alu_3d_0002_0005", "test_information_1d_information_1d", "test_information_2d_information_2d", "test_information_3d_information_3d", "test_output_pgf", "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000", "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001", "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002", "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000", "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001", "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002", "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003", "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003", "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004", "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004", "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005", "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006", "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007", "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008", "test_search_yasp_1d_0000", "test_search_yasp_2d_0001", "test_search_yasp_3d_0002", "test_search_alberta_1d_0003", "test_search_alberta_2d_0004", "test_search_alberta_3d_0005", "test_search_alu_2d_0000_0006", "test_search_alu_2d_0001_0007", "test_search_alu_2d_0002_0008", "test_search_alu_3d_0000_0009", "test_search_alu_3d_0001_0010", "test_search_alu_3d_0002_0011", "test_search_ug_2d_0012", "test_search_ug_3d_0013", "test_walker", "test_eoc_gridprovider"], {"test_boundaryinfo_factory_alberta_1d_0003": 0.01879096031188965, "test_boundaryinfo_factory_alberta_2d_0004": 0.017849206924438477, "test_boundaryinfo_factory_alberta_3d_0005": 0.016821622848510742, "test_boundaryinfo_factory_alu_2d_0000_0006": 0.020161151885986328, "test_boundaryinfo_factory_alu_2d_0001_0007": 0.021579265594482422, "test_boundaryinfo_factory_alu_2d_0002_0008": 0.018848896026611328, "test_boundaryinfo_factory_alu_3d_0000_0009": 0.021801233291625977, "test_boundaryinfo_factory_alu_3d_0001_0010": 0.013073921203613281, "test_boundaryinfo_factory_alu_3d_0002_0011": 0.01934957504272461, "test_boundaryinfo_factory_ug_2d_0012": 0.06149005889892578, "test_boundaryinfo_factory_ug_3d_0013": 0.012807607650756836, "test_boundaryinfo_factory_yasp_1d_0000": 0.04857516288757324, "test_boundaryinfo_factory_yasp_2d_0001": 0.02437448501586914, "test_boundaryinfo_factory_yasp_3d_0002": 0.020878076553344727, "test_cube_gridprovider_alberta_1d_0003": 0.016344308853149414, "test_cube_gridprovider_alberta_2d_0004": 0.01675248146057129, "test_cube_gridprovider_alberta_3d_0005": 0.01607537269592285, "test_cube_gridprovider_alu_2d_0000_0006": 0.020139217376708984, "test_cube_gridprovider_alu_2d_0001_0007": 0.022524356842041016, "test_cube_gridprovider_alu_2d_0002_0008": 0.020697832107543945, "test_cube_gridprovider_alu_3d_0000_0009": 0.01953434944152832, "test_cube_gridprovider_alu_3d_0001_0010": 0.020487308502197266, "test_cube_gridprovider_alu_3d_0002_0011": 0.014725923538208008, "test_cube_gridprovider_ug_2d_0012": 0.013370037078857422, "test_cube_gridprovider_ug_3d_0013": 0.013493537902832031, "test_cube_gridprovider_yasp_1d_0000": 0.02048468589782715, "test_cube_gridprovider_yasp_2d_0001": 0.01860785484313965, "test_cube_gridprovider_yasp_3d_0002": 0.01403498649597168, "test_dd_glued_2d": 0.020163774490356445, "test_dd_glued_3d": 0.018154144287109375, "test_dd_subdomains_cube_1d_alberta_1d_0001": 0.02178025245666504, "test_dd_subdomains_cube_1d_yasp_1d_0000": 0.04023599624633789, "test_dd_subdomains_cube_2d_alberta_2d_0001": 0.014922618865966797, "test_dd_subdomains_cube_2d_alu_2d_0000_0002": 0.014841079711914062, "test_dd_subdomains_cube_2d_alu_2d_0001_0003": 0.014711856842041016, "test_dd_subdomains_cube_2d_alu_2d_0002_0004": 0.019779205322265625, "test_dd_subdomains_cube_2d_yasp_2d_0000": 0.015044212341308594, "test_dd_subdomains_cube_3d_alberta_3d_0001": 0.015231132507324219, "test_dd_subdomains_cube_3d_alu_3d_0000_0002": 0.01627326011657715, "test_dd_subdomains_cube_3d_alu_3d_0001_0003": 0.01916646957397461, "test_dd_subdomains_cube_3d_alu_3d_0002_0004": 0.017833232879638672, "test_dd_subdomains_cube_3d_yasp_3d_0000": 0.021175384521484375, "test_dgf_gridprovider_alberta_1d_0003": 0.014127731323242188, "test_dgf_gridprovider_alberta_2d_0004": 0.01454472541809082, "test_dgf_gridprovider_alberta_3d_0005": 0.014353275299072266, "test_dgf_gridprovider_alu_2d_0000_0006": 0.02131032943725586, "test_dgf_gridprovider_alu_2d_0001_0007": 0.02017378807067871, "test_dgf_gridprovider_alu_2d_0002_0008": 0.027289152145385742, "test_dgf_gridprovider_alu_3d_0000_0009": 0.021492481231689453, "test_dgf_gridprovider_alu_3d_0001_0010": 0.018991708755493164, "test_dgf_gridprovider_alu_3d_0002_0011": 0.025875091552734375, "test_dgf_gridprovider_ug_2d_0012": 0.013030052185058594, "test_dgf_gridprovider_ug_3d_0013": 0.013205289840698242, "test_dgf_gridprovider_yasp_1d_0000": 0.018175125122070312, "test_dgf_gridprovider_yasp_2d_0001": 0.017711162567138672, "test_dgf_gridprovider_yasp_3d_0002": 0.01462244987487793, "test_empty": 0.043166160583496094, "test_eoc_gridprovider": 0.021875381469726562, "test_gmsh_gridprovider_alu_2d_0000_0000": 0.02014899253845215, "test_gmsh_gridprovider_alu_2d_0001_0001": 0.022755861282348633, "test_gmsh_gridprovider_alu_2d_0002_0002": 0.021397113800048828, "test_gmsh_gridprovider_alu_3d_0000_0003": 0.022572994232177734, "test_gmsh_gridprovider_alu_3d_0001_0004": 0.021507740020751953, "test_gmsh_gridprovider_alu_3d_0002_0005": 0.016646385192871094, "test_information_1d_information_1d": 0.015696048736572266, "test_information_2d_information_2d": 0.014620542526245117, "test_information_3d_information_3d": 0.022844552993774414, "test_output_pgf": 0.02042245864868164, "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000": 0.01412653923034668, "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001": 0.014034032821655273, "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002": 0.01592850685119629, "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003": 0.10288047790527344, "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003": 0.10729146003723145, "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004": 0.10921049118041992, "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004": 0.11465072631835938, "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005": 0.11975669860839844, "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006": 0.10587620735168457, "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007": 0.013364315032958984, "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008": 0.013238668441772461, "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000": 0.12091302871704102, "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001": 0.12057709693908691, "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002": 0.12546849250793457, "test_search_alberta_1d_0003": 0.014313936233520508, "test_search_alberta_2d_0004": 0.014206886291503906, "test_search_alberta_3d_0005": 0.014241695404052734, "test_search_alu_2d_0000_0006": 0.015004634857177734, "test_search_alu_2d_0001_0007": 0.02175450325012207, "test_search_alu_2d_0002_0008": 0.019686460494995117, "test_search_alu_3d_0000_0009": 0.018866539001464844, "test_search_alu_3d_0001_0010": 0.021307945251464844, "test_search_alu_3d_0002_0011": 0.018821001052856445, "test_search_ug_2d_0012": 0.013257026672363281, "test_search_ug_3d_0013": 0.01296544075012207, "test_search_yasp_1d_0000": 0.02102828025817871, "test_search_yasp_2d_0001": 0.019915103912353516, "test_search_yasp_3d_0002": 0.019326210021972656, "test_walker": 0.015680551528930664}]
\ No newline at end of file
diff --git a/dune/xt/grid/test/walker.cc b/dune/xt/grid/test/walker.cc
index df647533bd0590acbde3ab2869bc196a90cb07e5..99bcf2eaa3cb0a4169cfcf79574665709ba7553d 100644
--- a/dune/xt/grid/test/walker.cc
+++ b/dune/xt/grid/test/walker.cc
@@ -49,8 +49,11 @@ struct GridWalkerTest : public ::testing::Test
     const auto gv = grid_prv.grid().leafGridView();
     Walker<GridLayerType> walker(gv);
     const auto correct_size = gv.size(0);
-    std::atomic<size_t> count(0);
+    atomic<size_t> count(0);
+    atomic<size_t> intersection_count(0);
     auto counter = GenericElementFunctor<GridLayerType>([] {}, [&count](const EntityType&) { count++; }, [] {});
+    auto intersection_counter = GenericIntersectionFunctor(
+        [] {}, [&](const IntersectionType&, const EntityType&, const EntityType&) { intersection_count++; }, [] {});
     auto test1 = [&] {
       walker.append(counter);
       walker.walk(false);
@@ -60,6 +63,8 @@ struct GridWalkerTest : public ::testing::Test
       walker.walk(true);
     };
     auto test3 = [&] { walker.append(counter).walk(true); };
+    auto test4 = [&] { walker.append(intersection_counter).walk(false); };
+    auto test5 = [&] { walker.append(intersection_counter).walk(true); };
 
     list<function<void()>> tests({test1, test2, test3});
 #if DUNE_VERSION_NEWER(DUNE_COMMON, 3, 9) && HAVE_TBB // EXADUNE
@@ -78,7 +83,7 @@ struct GridWalkerTest : public ::testing::Test
     for (const auto& test : tests) {
       count = 0;
       test();
-      EXPECT_EQ(correct_size, count);
+      EXPECT_EQ(count, correct_size);
     }
   }
 
diff --git a/dune/xt/grid/view/periodic.hh b/dune/xt/grid/view/periodic.hh
index 56b50c118f968ee5a6ad2a377f657abb6827f49b..b3732c951ac7a7b69a98f0be8021b35ddc9e0429 100644
--- a/dune/xt/grid/view/periodic.hh
+++ b/dune/xt/grid/view/periodic.hh
@@ -781,6 +781,8 @@ public:
     , new_indices_(std::make_shared<std::array<std::vector<IndexType>, num_geometries>>())
     , real_index_set_(BaseType::indexSet())
   {
+    if (real_grid_layer.comm().size() > 1)
+      DUNE_THROW(Dune::NotImplemented, "PeriodicGridView does not work for MPI-distributed grids!");
     this->update();
   } // constructor PeriodicGridLayerWrapper(...)
 
diff --git a/dune/xt/grid/walker.hh b/dune/xt/grid/walker.hh
index 98c74eda10b4eb48bf2b3a58d4009d76ae6b8ae6..e09f4ac4499906a94e072b162ad7239a27ffbc2f 100644
--- a/dune/xt/grid/walker.hh
+++ b/dune/xt/grid/walker.hh
@@ -573,7 +573,7 @@ protected:
   template <class PartioningType, class WalkerType>
   struct Body
   {
-    Body(WalkerType& walker, PartioningType& partitioning)
+    Body(WalkerType& walker, const PartioningType& partitioning)
       : walker_(walker)
       , partitioning_(partitioning)
     {
diff --git a/python/dune/xt/bindings.cc b/python/dune/xt/bindings.cc
index e40eefb00f0621d37ca3c02b768c69ca6bae7afc..145ccca4b43bcb936c26a2f059d1d31c998cd5b9 100644
--- a/python/dune/xt/bindings.cc
+++ b/python/dune/xt/bindings.cc
@@ -27,8 +27,6 @@ PYBIND11_MODULE(_grid, m)
   namespace py = pybind11;
   using namespace pybind11::literals;
 
-  Dune::XT::Common::bindings::addbind_exceptions(m);
-
   py::module::import("dune.xt.common");
 
   Dune::XT::Common::bindings::add_initialization(m, "dune.xt.grid");
diff --git a/python/dune/xt/boundaryinfo.cc b/python/dune/xt/boundaryinfo.cc
index 7ee0c77efe2105d6228ce3d861a1606c90e1b562..2c8b0f2d4bc7319119fa765e3d739fbe64def4d4 100644
--- a/python/dune/xt/boundaryinfo.cc
+++ b/python/dune/xt/boundaryinfo.cc
@@ -71,14 +71,16 @@ struct bind_grid_layer_info<Grid, l, null_template_tuple>
 
 
 template <class>
-void bind_grid_layer(pybind11::module& m, std::integral_constant<size_t, 0>){};
+void bind_grid_layer(pybind11::module&, std::integral_constant<size_t, 0>)
+{
+}
 
 template <class Grid, size_t counter>
 void bind_grid_layer(pybind11::module& m, std::integral_constant<size_t, counter>)
 {
   bind_grid_layer_info<Grid, layers[counter - 1]>::bind(m);
   bind_grid_layer<Grid>(m, std::integral_constant<size_t, counter - 1>());
-};
+}
 
 template <class GridTuple = Dune::XT::Grid::bindings::AvailableTypes>
 void bind_grid(pybind11::module& m)
@@ -89,7 +91,7 @@ void bind_grid(pybind11::module& m)
 }
 
 template <>
-void bind_grid<boost::tuples::null_type>(pybind11::module& m)
+void bind_grid<boost::tuples::null_type>(pybind11::module&)
 {
 }
 
diff --git a/python/dune/xt/grid/__init__.py b/python/dune/xt/grid/__init__.py
index a07a91bfe59c1119d1f4d1c04b84a23984072dd9..30d3c6c94c529a00ba6686512726d172782ad910 100644
--- a/python/dune/xt/grid/__init__.py
+++ b/python/dune/xt/grid/__init__.py
@@ -12,26 +12,3 @@
 # ~~~
 
 import dune.xt
-
-try:
-    from dune.xt._boundaryinfo import *
-    from dune.xt._types import *
-    from dune.xt._walker import *
-    from dune.xt._provider import *
-except ImportError as e:
-    import os
-    import logging
-    if os.environ.get('DXT_PYTHON_DEBUG', False):
-        raise e
-    logging.error('dune-xt-grid bindings not available')
-
-HAVE_DUNE_ALUGRID = 'GridProvider__2d_simplex_aluconform' in globals()
-
-
-def make_walker(gridprovider, level = 0):
-    for factory in [globals()[s] for s in globals().keys() if s.startswith('make_walker_on_')]:
-        try:
-            return factory(gridprovider, level)
-        except:
-            continue
-    raise TypeError('no matching walker for gridview {}'.format(gridprovider.__class__))
\ No newline at end of file
diff --git a/python/dune/xt/grid/boundaryinfo.py b/python/dune/xt/grid/boundaryinfo.py
new file mode 100644
index 0000000000000000000000000000000000000000..e1d7fae79f2f093d7fa229a1cccef9b39428f559
--- /dev/null
+++ b/python/dune/xt/grid/boundaryinfo.py
@@ -0,0 +1,8 @@
+try:
+    from dune.xt._boundaryinfo import *
+except ImportError as e:
+    import os
+    import logging
+    if os.environ.get('DXT_PYTHON_DEBUG', False):
+        raise e
+    logging.error('dune-xt-grid bindings not available')
diff --git a/python/dune/xt/grid/gridprovider.hh b/python/dune/xt/grid/gridprovider.hh
index e8af7e3da5071dd50b0e315b3508dfccd493358e..dda5d5f7aad8d2f5c21d7ea9cba0cb0aae39a94f 100644
--- a/python/dune/xt/grid/gridprovider.hh
+++ b/python/dune/xt/grid/gridprovider.hh
@@ -17,8 +17,9 @@
 #include <dune/pybindxi/stl.h>
 
 #include <python/dune/xt/common/configuration.hh>
-#include <dune/xt/common/exceptions.hh>
 #include <python/dune/xt/common/fvector.hh>
+#include <dune/xt/common/parallel/mpi_comm_wrapper.hh>
+#include <dune/xt/common/exceptions.hh>
 #include <dune/xt/common/numeric_cast.hh>
 #include <dune/xt/grid/dd/subdomains/grid.hh>
 #include <dune/xt/grid/entity.hh>
@@ -31,11 +32,18 @@ namespace Grid {
 
 
 template <class G>
-pybind11::class_<GridProvider<G, Grid::none_t>> bind_GridProvider(pybind11::module& m, const std::string& grid_id)
+void bind_GridProvider(pybind11::module& m, const std::string& grid_id)
 {
   namespace py = pybind11;
   using namespace pybind11::literals;
 
+  typedef GridProviderFactory<G> F;
+  const std::string fac_id = std::string("GridProviderFactory__" + grid_id);
+  py::class_<F> fac(m, fac_id.c_str(), fac_id.c_str());
+  fac.def_static("available", &F::available);
+  fac.def_static("default_config", &F::default_config);
+
+
   typedef GridProvider<G, Grid::none_t> C;
 
   py::class_<C> c(m, std::string("GridProvider__" + grid_id).c_str(), std::string("GridProvider__" + grid_id).c_str());
@@ -60,14 +68,11 @@ pybind11::class_<GridProvider<G, Grid::none_t>> bind_GridProvider(pybind11::modu
   });
   c.def_property_readonly("grid_type", [grid_id](const C& /*self*/) { return grid_id; });
   c.def_property_readonly("dim", [](const C& /*self*/) { return C::dimDomain; });
-
-  return c;
 } // ... bind_GridProvider(...)
 
 
 template <class G>
-pybind11::class_<GridProvider<G, DD::SubdomainGrid<G>>> bind_DdSubdomainsGridProvider(pybind11::module& m,
-                                                                                      const std::string& grid_id)
+void bind_DdSubdomainsGridProvider(pybind11::module& m, const std::string& grid_id)
 {
   namespace py = pybind11;
   using namespace pybind11::literals;
@@ -127,8 +132,6 @@ pybind11::class_<GridProvider<G, DD::SubdomainGrid<G>>> bind_DdSubdomainsGridPro
           return result;
         },
         "subdomain"_a);
-
-  return c;
 } // ... bind_DdSubdomainsGridProvider(...)
 
 
@@ -139,16 +142,21 @@ void bind_make_cube_grid(pybind11::module& m, const std::string& grid_id)
   using namespace pybind11::literals;
 
   m.def(std::string("make_cube_grid__" + grid_id).c_str(),
-        [](const Common::Configuration& cfg) { return make_cube_grid<G>(cfg); },
-        "cfg"_a = cube_gridprovider_default_config());
+        [](const Common::Configuration& cfg, Common::MPI_Comm_Wrapper mpi_comm) {
+          return make_cube_grid<G>(cfg, mpi_comm.get());
+        },
+        "cfg"_a = cube_gridprovider_default_config(),
+        "mpi_comm"_a = Common::MPI_Comm_Wrapper());
 
   m.def(std::string("make_cube_grid__" + grid_id).c_str(),
         [](const FieldVector<typename G::ctype, G::dimension>& lower_left,
            const FieldVector<typename G::ctype, G::dimension>& upper_right,
            const std::array<unsigned int, G::dimension>& num_elements,
            const unsigned int num_refinements,
-           const std::array<unsigned int, G::dimension>& overlap_size) {
-          return make_cube_grid<G>(lower_left, upper_right, num_elements, num_refinements, overlap_size);
+           const std::array<unsigned int, G::dimension>& overlap_size,
+           Common::MPI_Comm_Wrapper mpi_comm) {
+          return make_cube_grid<G>(
+              lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm.get());
         },
         "lower_left"_a,
         "upper_right"_a,
@@ -156,7 +164,8 @@ void bind_make_cube_grid(pybind11::module& m, const std::string& grid_id)
             cube_dd_subdomains_gridprovider_default_config().template get<std::vector<unsigned int>>("num_elements")),
         "num_refinements"_a = cube_gridprovider_default_config().template get<unsigned int>("num_refinements"),
         "overlap_size"_a = XT::Common::make_array<unsigned int, G::dimension>(
-            cube_dd_subdomains_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size")));
+            cube_dd_subdomains_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size")),
+        "mpi_comm"_a = Common::MPI_Comm_Wrapper());
 } // ... bind_make_cube_grid(...)
 
 
@@ -166,6 +175,13 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g
   namespace py = pybind11;
   using namespace pybind11::literals;
 
+  m.def(std::string("make_cube_dd_subdomains_grid__" + grid_id).c_str(),
+        [](const Common::Configuration& cfg, Common::MPI_Comm_Wrapper mpi_comm) {
+          return make_cube_dd_subdomains_grid<G>(cfg, mpi_comm.get());
+        },
+        "cfg"_a = cube_gridprovider_default_config(),
+        "mpi_comm"_a = Common::MPI_Comm_Wrapper());
+
   m.def(std::string("make_cube_dd_subdomains_grid__" + grid_id).c_str(),
         [](const FieldVector<typename G::ctype, G::dimension>& lower_left,
            const FieldVector<typename G::ctype, G::dimension>& upper_right,
@@ -174,7 +190,8 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g
            const std::array<unsigned int, G::dimension>& overlap_size,
            const std::array<unsigned int, G::dimension> num_partitions,
            const size_t num_oversampling_layers,
-           const size_t inner_boundary_segment_index) {
+           const size_t inner_boundary_segment_index,
+           Common::MPI_Comm_Wrapper mpi_comm) {
           return make_cube_dd_subdomains_grid<G>(lower_left,
                                                  upper_right,
                                                  num_elements,
@@ -182,7 +199,8 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g
                                                  overlap_size,
                                                  num_partitions,
                                                  num_oversampling_layers,
-                                                 inner_boundary_segment_index);
+                                                 inner_boundary_segment_index,
+                                                 mpi_comm.get());
         },
         "lower_left"_a,
         "upper_right"_a,
@@ -196,7 +214,8 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g
         "num_oversampling_layers"_a =
             cube_dd_subdomains_gridprovider_default_config().template get<size_t>("num_refinements"),
         "inner_boundary_segment_index"_a =
-            cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index"));
+            cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index"),
+        "mpi_comm"_a = Common::MPI_Comm_Wrapper());
 } // ... bind_make_cube_dd_subdomains_grid(...)
 
 
diff --git a/python/dune/xt/grid/provider.py b/python/dune/xt/grid/provider.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0f12ac7f342aa032bf95fe2fd043b261095bfe6
--- /dev/null
+++ b/python/dune/xt/grid/provider.py
@@ -0,0 +1,17 @@
+try:
+    from dune.xt._provider import *
+except ImportError as e:
+    import os
+    import logging
+    if os.environ.get('DXT_PYTHON_DEBUG', False):
+        raise e
+    logging.error('dune-xt-grid bindings not available')
+
+
+def default_options_cube_grid(type_str):
+    factory = 'GridProviderFactory__{}'.format(type_str)
+    try:
+        fac = globals()[factory]
+    except KeyError:
+        raise TypeError('no GridProviderFactory available for Type {}'.format(type_str))
+    return fac.default_config('xt.grid.gridprovider.cube')
diff --git a/python/dune/xt/grid/types.py b/python/dune/xt/grid/types.py
index 41b8a1de1dfcc62edd0036afa059d04a35535ef0..951b146bf587436b825567e3ec23a3fb1be2d355 100644
--- a/python/dune/xt/grid/types.py
+++ b/python/dune/xt/grid/types.py
@@ -1,3 +1,12 @@
+try:
+    from dune.xt._types import *
+except ImportError as e:
+    import os
+    import logging
+    if os.environ.get('DXT_PYTHON_DEBUG', False):
+        raise e
+    logging.error('dune-xt-grid bindings not available')
+
 from collections import namedtuple
 
 arguments = {'alu': namedtuple('alu_args', 'dim element_type refinement'),
diff --git a/python/dune/xt/grid/walker/__init__.py b/python/dune/xt/grid/walker/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f25bbdd76efc3d58dd8ce4c22a16da1f7a67b85d
--- /dev/null
+++ b/python/dune/xt/grid/walker/__init__.py
@@ -0,0 +1,17 @@
+try:
+    from dune.xt._walker import *
+except ImportError as e:
+    import os
+    import logging
+    if os.environ.get('DXT_PYTHON_DEBUG', False):
+        raise e
+    logging.error('dune-xt-grid bindings not available')
+
+
+def make_walker(gridprovider, level = 0):
+    for factory in [globals()[s] for s in globals().keys() if s.startswith('make_walker_on_')]:
+        try:
+            return factory(gridprovider, level)
+        except:
+            continue
+    raise TypeError('no matching walker for gridview {}'.format(gridprovider.__class__))
\ No newline at end of file
diff --git a/python/dune/xt/grid/walker/apply-on.bindings.hh b/python/dune/xt/grid/walker/apply-on.bindings.hh
index 14eef19ff8b02f21e553eb87583302a9e4f6f512..dfa80d5f93d6ab920afa9dfb87d3912b6e26d110 100644
--- a/python/dune/xt/grid/walker/apply-on.bindings.hh
+++ b/python/dune/xt/grid/walker/apply-on.bindings.hh
@@ -117,7 +117,7 @@ public:
                          _w>::                                                                                         \
           bind(_m,                                                                                                     \
                _class_name,                                                                                            \
-               Dune::XT::Grid::bindings::layer_name<Dune::XT::Grid::Layers::_layer>::value() + "_"                     \
+               Dune::XT::Grid::layer_names[Dune::XT::Grid::Layers::_layer] + "_"                                       \
                    + Dune::XT::Grid::bindings::backend_name<Dune::XT::Grid::Backends::_backend>::value())
 
 /*#if HAVE_ALBERTA
diff --git a/python/dune/xt/provider.cc b/python/dune/xt/provider.cc
index d819068e4def418d63b650d2b352f2326001ac07..c4e418744bd521a2ded50820d6004a9cdf3ef47c 100644
--- a/python/dune/xt/provider.cc
+++ b/python/dune/xt/provider.cc
@@ -45,7 +45,7 @@ void addbind_for_Grid(pybind11::module& m)
 } // ... addbind_for_Grid(...)
 
 template <>
-void addbind_for_Grid<boost::tuples::null_type>(pybind11::module& m)
+void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&)
 {
 }
 
diff --git a/python/dune/xt/types.cc b/python/dune/xt/types.cc
index a1e15b67e33da7c633da1ab7c4377114f54eb3c1..b7b65816673784d9d931bf134f05fec54a31d268 100644
--- a/python/dune/xt/types.cc
+++ b/python/dune/xt/types.cc
@@ -34,7 +34,7 @@ void addbind_for_Grid(pybind11::module& m, std::vector<std::string>& available_t
 
 
 template <>
-void addbind_for_Grid<boost::tuples::null_type>(pybind11::module& m, std::vector<std::string>& available_types)
+void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&, std::vector<std::string>&)
 {
 }
 
diff --git a/python/dune/xt/walker.cc b/python/dune/xt/walker.cc
index bf8a77d79bcc4dd7cc8f858399457a939c627671..2635a3a62d84cdef4e4151dfcdf0482e1e157e9d 100644
--- a/python/dune/xt/walker.cc
+++ b/python/dune/xt/walker.cc
@@ -58,7 +58,7 @@ void addbind_for_Grid(pybind11::module& m)
 } // ... addbind_for_Grid(...)
 
 template <>
-void addbind_for_Grid<boost::tuples::null_type>(pybind11::module& m)
+void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&)
 {
 }
 
diff --git a/python/test/base.py b/python/test/base.py
index c1bea381de38611e55e43e358baab428b584676b..7b809445566dcd5e6d493567812a6f38e679b818 100644
--- a/python/test/base.py
+++ b/python/test/base.py
@@ -9,10 +9,15 @@
 
 import pytest
 from dune.xt.common.test import load_all_submodule
-
+from dune.xt.grid import types
 
 def test_load_all():
     import dune.xt.grid as xtc
     load_all_submodule(xtc)
 
 
+def test_types():
+    cache = {}
+    rt = types.all_types(cache=cache, dims=(2,3))
+    assert len(rt) == 0
+
diff --git a/python/test/walker.py b/python/test/walker.py
index e2ead162d23cb86e7b5e16fdc19edbc6f17d3d1d..0e8d6a3d344358ef1e72625cac70f248bd913104 100644
--- a/python/test/walker.py
+++ b/python/test/walker.py
@@ -6,24 +6,78 @@
 # Authors:
 #   Rene Milk (2018)
 # ~~~
+import functools
+import itertools
 
 import pytest
 import dune.xt.common as xtc
 import dune.xt.grid as xtg
+from dune.xt.grid import provider, types, walker
 
 
-@pytest.fixture(params=xtg.available_types)
+def _grid_provider_factory(grid_type, mpi, maker_str='make_cube_grid__{}'):
+    if not mpi:
+        fn = maker_str.format(grid_type)
+        maker = getattr(xtg.provider, fn)
+        return maker()
+
+    try:
+        from mpi4py import MPI
+    except ImportError:
+        pytest.skip('optional mpi4py is missing')
+        return
+    opts = provider.default_options_cube_grid(grid_type)
+    fn = maker_str.format(grid_type)
+    maker = getattr(xtg.provider, fn)
+    return maker(opts, MPI.COMM_WORLD)
+
+
+_dd_subdomain_grid_provider_factory = functools.partial(_grid_provider_factory, maker_str='make_cube_dd_subdomain_grid__{}')
+
+
+@pytest.fixture(params=xtg.types.available_types)
+def mpi_grid_provider(request):
+    return _grid_provider_factory(request.param, mpi=True)
+
+
+@pytest.fixture(params=xtg.types.available_types)
 def grid_provider(request):
-    fn = 'make_cube_grid__{}'.format(request.param)
-    maker = getattr(xtg, fn)
-    return maker()
+    return _grid_provider_factory(request.param, mpi=False)
+
+
+@pytest.fixture(params=itertools.product(xtg.types.available_types, (True, False)))
+def combined_grid_provider(request):
+    return _grid_provider_factory(*request.param)
+
+
+@pytest.fixture(params=itertools.product(xtg.types.available_types, (True, False)))
+def combined_dd_subdomain_grid_provider(request):
+    return _grid_provider_factory(*request.param)
 
 
 def test_available():
-    assert len(xtg.available_types) > 0
+    assert len(xtg.types.available_types) > 0
+
+
+def test_grid_provider(combined_grid_provider):
+    grid_provider = combined_grid_provider
+    assert grid_provider.max_level() >= 0
+    num_el = grid_provider.num_elements
+    assert num_el > 1
+    grid_provider.global_refine(1)
+    try:
+        grid_provider.visualize()
+    except xtc.DuneError as e:
+        if 'NotImplemented' not in str(e):
+            raise e
+    assert grid_provider.num_elements > num_el
+    assert grid_provider.num_subdomains == 1
+    assert grid_provider.max_entity_diameter() > 0
+    assert grid_provider.dim > 0
 
 
-def test_grid_provider(grid_provider):
+def test_dd_subdomain_grid_provider(combined_dd_subdomain_grid_provider):
+    grid_provider = combined_dd_subdomain_grid_provider
     assert grid_provider.max_level() >= 0
     num_el = grid_provider.num_elements
     assert num_el > 1
@@ -40,12 +94,11 @@ def test_grid_provider(grid_provider):
 
 
 def test_walker(grid_provider):
-    walker = xtg.make_walker(grid_provider)
+    walker = xtg.walker.make_walker(grid_provider)
     walker.walk()
     walker.clear()
 
 
-
 def test_count():
     pass