diff --git a/.ci/gitlab/Dockerfile b/.ci/gitlab/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..c7fedacb1fe2e2db0abd29ca7b975443afd89271
--- /dev/null
+++ b/.ci/gitlab/Dockerfile
@@ -0,0 +1,8 @@
+ARG BASE
+FROM zivgitlab.wwu.io/ag-ohlberger/dune-community/dune-gdt-super/$BASE
+
+COPY . ${SUPERDIR}/${MY_MODULE}/
+RUN ls -l ${SUPERDIR}/${MY_MODULE}/
+RUN cd ${SUPERDIR} && \
+    echo ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} all && \
+    ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} all
diff --git a/.ci/gitlab/ci.yml b/.ci/gitlab/ci.yml
deleted file mode 100644
index 922081f340296d8fce90e0e245ded72d0370dd8d..0000000000000000000000000000000000000000
--- a/.ci/gitlab/ci.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# kate: indent-width 2;
-
-include:
-  - remote: 'https://raw.githubusercontent.com/dune-community/dune-xt-ci/master/gitlab-job-template.yml'
-
-variables:
-  MY_MODULE: 'dune-gdt'
-  REGISTRY: zivgitlab.wwu.io/ag-ohlberger/dune-community/dune-gdt-super
-
-unstable_gcc:
-  extends: .jobtpl
-  variables:
-    DOCKER_TAG: debian-unstable_gcc_full
-
-gcc:
-  extends: .jobtpl
-  variables:
-    DOCKER_TAG: debian_gcc_full
-
-clang:
-  extends: .jobtpl
-  variables:
-    DOCKER_TAG: debian_clang_full
diff --git a/.ci/gitlab/config.yml b/.ci/gitlab/config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..fa004e88303a9352e54d9687f2a62f5020c3fd28
--- /dev/null
+++ b/.ci/gitlab/config.yml
@@ -0,0 +1,250 @@
+# THIS FILE IS AUTOGENERATED -- DO NOT EDIT       #
+# Edit and Re-run .ci/gitlab/config_template.py instead  #
+stages:
+  - sanity
+  - images
+  - cpp
+  - headercheck
+  - python
+
+variables:
+    GIT_SUBMODULE_STRATEGY: recursive
+    TRAVIS_BRANCH: ${CI_COMMIT_REF_NAME}
+    TRAVIS_COMMIT: ${CI_COMMIT_SHA}
+    CCACHE_BASEDIR: ${CI_PROJECT_DIR}
+    CCACHE_DIR: "${CI_PROJECT_DIR}/.ccache"
+    CCACHE_COMPILERCHECK: content
+    CCACHE_COMPRESS: "true"
+    PYTEST_ADDOPTS: "-s"
+    MY_MODULE: dune-gdt
+    BASE_PROJECT: zivgitlab.wwu.io/ag-ohlberger/dune-community/dune-gdt-super
+
+.image_builder:
+    tags:
+      - docker-in-docker
+      - long execution time
+    stage: images
+    rules:
+        - if: '$CI_COMMIT_REF_NAME =~ /^staging.*/'
+          when: never
+        - when: on_success
+    retry:
+        max: 2
+        when:
+            - runner_system_failure
+            - stuck_or_timeout_failure
+            - api_failure
+    image: harbor.uni-muenster.de/proxy-docker/library/docker:19.03.12
+    variables:
+        DOCKER_HOST: tcp://docker:2375/
+        DOCKER_DRIVER: overlay2
+        IMAGE: ${CI_REGISTRY_IMAGE}/ci_testing_${CI_IMAGE}:${CI_COMMIT_SHORT_SHA}
+    before_script:
+      - |
+        docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+        apk --update add py3-pip openssh-client rsync git file bash python3 curl
+        pip3 install -U docker jinja2 docopt
+
+        export BASEIMAGE="${MY_MODULE}-testing_${CI_IMAGE}:${CI_COMMIT_REF_NAME/\//_}"
+        # get image with fallback to master branch of the super repo
+        docker pull ${BASE_PROJECT}/${BASEIMAGE} || export BASEIMAGE="${MY_MODULE}-testing_${CI_IMAGE}:master"
+        docker pull ${BASE_PROJECT}/${BASEIMAGE}
+    script:
+      - |
+        git submodule update --init --recursive
+        docker build --build-arg BASE=${BASEIMAGE} -t ${IMAGE} -f .ci/gitlab/Dockerfile .
+        docker push ${IMAGE}
+    services:
+        - name: harbor.uni-muenster.de/proxy-docker/library/docker:dind
+          alias: docker
+    environment:
+        name: unsafe
+
+.subdir-test:
+    tags:
+      - long execution time
+    stage: test
+    rules:
+        - if: '$CI_COMMIT_REF_NAME =~ /^staging.*/'
+          when: never
+        - when: on_success
+    retry:
+        max: 2
+        when:
+            - runner_system_failure
+            - stuck_or_timeout_failure
+            - api_failure
+    image: ${CI_REGISTRY_IMAGE}/ci_testing_${CI_IMAGE}:${CI_COMMIT_SHORT_SHA}
+    cache:
+      key: "$CI_JOB_NAME"
+      paths:
+        - .ccache
+    before_script:
+      - |
+        mkdir /home/dune-ci/testresults && chmod -R 777 /home/dune-ci/testresults
+        [[ -f ./.gitsuper ]] && echo "Please remove .gitsuper from the repo" && exit 1
+        ccache --zero-stats || true
+    after_script:
+      - ccache --show-stats
+    artifacts:
+      reports:
+        junit: '/home/dune-ci/testresults/*xml'
+    environment:
+        name: unsafe
+
+.pre-commit:
+    stage: sanity
+    retry:
+        max: 2
+        when:
+            - runner_system_failure
+            - stuck_or_timeout_failure
+            - api_failure
+    image: "python:3.9"
+    cache:
+      paths:
+        - ${CI_PROJECT_DIR}/.cache/pre-commit
+    variables:
+        PRECOMMIT: "pre-commit run --all"
+    before_script:
+        - pip install pre-commit
+        - pre-commit install --install-hooks
+
+format_check:
+    extends: .pre-commit
+    script:
+        - ${PRECOMMIT} clang-format
+        - ${PRECOMMIT} yapf
+        - ${PRECOMMIT} trailing-whitespace
+
+lint:
+    extends: .pre-commit
+    script:
+        - ${PRECOMMIT} check-added-large-files
+        #- ${PRECOMMIT} flake8 disabled for now, finds lots of issue
+        - ${PRECOMMIT} debug-statements
+        - ${PRECOMMIT} check-yaml
+
+
+debian-unstable_gcc_full:
+    extends: .image_builder
+    variables:
+        CI_IMAGE: debian-unstable_gcc_full
+debian_gcc_full:
+    extends: .image_builder
+    variables:
+        CI_IMAGE: debian_gcc_full
+debian_clang_full:
+    extends: .image_builder
+    variables:
+        CI_IMAGE: debian_clang_full
+
+
+
+gdt unstable_gcc_full cpp:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian-unstable_gcc_full
+        TESTS_MODULE_SUBDIR: gdt
+    tags:
+        - dustin
+    stage: cpp
+    needs: ["debian-unstable_gcc_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_cpp.bash
+
+gdt unstable_gcc_full headercheck:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian-unstable_gcc_full
+        TESTS_MODULE_SUBDIR: gdt
+    tags:
+        - dustin
+    stage: headercheck
+    needs: ["debian-unstable_gcc_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_headercheck.bash
+
+gdt gcc_full cpp:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian_gcc_full
+        TESTS_MODULE_SUBDIR: gdt
+    tags:
+        - dustin
+    stage: cpp
+    needs: ["debian_gcc_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_cpp.bash
+
+gdt gcc_full headercheck:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian_gcc_full
+        TESTS_MODULE_SUBDIR: gdt
+    tags:
+        - dustin
+    stage: headercheck
+    needs: ["debian_gcc_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_headercheck.bash
+
+gdt clang_full cpp:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian_clang_full
+        TESTS_MODULE_SUBDIR: gdt
+    tags:
+        - dustin
+    stage: cpp
+    needs: ["debian_clang_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_cpp.bash
+
+gdt clang_full headercheck:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian_clang_full
+        TESTS_MODULE_SUBDIR: gdt
+    tags:
+        - dustin
+    stage: headercheck
+    needs: ["debian_clang_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_headercheck.bash
+
+
+
+unstable_gcc_full python:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian-unstable_gcc_full
+    tags:
+        - dustin
+    stage: python
+    needs: ["debian-unstable_gcc_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_python.bash
+
+gcc_full python:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian_gcc_full
+    tags:
+        - dustin
+    stage: python
+    needs: ["debian_gcc_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_python.bash
+
+clang_full python:
+    extends: .subdir-test
+    variables:
+        CI_IMAGE: debian_clang_full
+    tags:
+        - amm-only
+    stage: python
+    needs: ["debian_clang_full"]
+    script:
+          - /home/dune-ci/src/${MY_MODULE}/.ci/shared/scripts/test_python.bash
+
diff --git a/.ci/gitlab/config_template.py b/.ci/gitlab/config_template.py
new file mode 100755
index 0000000000000000000000000000000000000000..e192dc13c1a5a40026de50d78b881d8c6d252c26
--- /dev/null
+++ b/.ci/gitlab/config_template.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+# kate: indent-width 2;
+
+import os
+import jinja2
+from itertools import product
+import urllib.request
+
+template_url = 'https://raw.githubusercontent.com/dune-community/dune-xt-ci/master/xt_and_gdt_config_template.txt'
+tpl = urllib.request.urlopen(template_url).read().decode('utf-8').replace('DUNE_XT_OR_DUNE_GDT', 'dune-gdt')
+tpl = jinja2.Template(tpl)
+images = ['debian-unstable_gcc_full', 'debian_gcc_full', 'debian_clang_full']
+subdirs = ['gdt']
+kinds = ['cpp', 'headercheck']
+matrix = product(images, subdirs, kinds)
+with open(os.path.join(os.path.dirname(__file__), 'config.yml'), 'wt') as yml:
+    yml.write(tpl.render(matrix=matrix, images=images, kinds=kinds, subdirs=subdirs))
diff --git a/.ci/shared b/.ci/shared
index fd54406c6d6f21b9375e77725c50eff12f632286..3033fe7a9270cedbdf72275da69fda1d4ac97427 160000
--- a/.ci/shared
+++ b/.ci/shared
@@ -1 +1 @@
-Subproject commit fd54406c6d6f21b9375e77725c50eff12f632286
+Subproject commit 3033fe7a9270cedbdf72275da69fda1d4ac97427
diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml
index 811951b8eae52acdfc63364b2f775aeecba93f08..48a20e1c802cbd3598dfc3bea6b550bec82e8db5 100644
--- a/.github/workflows/automerge.yml
+++ b/.github/workflows/automerge.yml
@@ -13,7 +13,7 @@ on:
   pull_request_review:
     types:
       - submitted
-  check_suite: 
+  check_suite:
     types:
       - completed
   status: {}
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 120000
index 0000000000000000000000000000000000000000..304f535ee03a85bfa7688db32c84e305d181de0b
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1 @@
+.vcsetup/pre-commit-config.yaml
\ No newline at end of file
diff --git a/.vcsetup b/.vcsetup
index 75e46272125c983b7f02af5b3e7b60749a6fac3b..a9ada423332d91cadddfc7ba50ce889ed1758435 160000
--- a/.vcsetup
+++ b/.vcsetup
@@ -1 +1 @@
-Subproject commit 75e46272125c983b7f02af5b3e7b60749a6fac3b
+Subproject commit a9ada423332d91cadddfc7ba50ce889ed1758435
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 083b6db4c89c20ac2a0a4461f8d12830f508e3c1..56d56b824a33b57b2e33f66cd5710d4bbf41d868 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,11 +17,11 @@ project("dune-gdt" CXX)
 
 cmake_minimum_required(VERSION 3.1)
 
-if(NOT (dune-common_DIR OR dune-common_ROOT OR "${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*"))
-  string(REPLACE ${CMAKE_PROJECT_NAME}
-                 dune-common
-                 dune-common_DIR
-                 ${PROJECT_BINARY_DIR})
+if(NOT
+   (dune-common_DIR
+    OR dune-common_ROOT
+    OR "${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*"))
+  string(REPLACE ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR ${PROJECT_BINARY_DIR})
 endif()
 
 # dune-common
@@ -51,11 +51,12 @@ if(EIGEN3_FOUND)
 endif(EIGEN3_FOUND)
 
 # search for spe10 data files
-find_file(SPE10MODEL1DATA
-          NAMES perm_case1.dat
-          PATHS "${dune-gdt_SOURCE_DIR}/../local/src/spe10/model1"
-          DOC "Location of perm_case1.dat"
-          NO_DEFAULT_PATH)
+find_file(
+  SPE10MODEL1DATA
+  NAMES perm_case1.dat
+  PATHS "${dune-gdt_SOURCE_DIR}/../local/src/spe10/model1"
+  DOC "Location of perm_case1.dat"
+  NO_DEFAULT_PATH)
 
 add_subdirectory(doc)
 add_subdirectory(dune)
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
index 3b47aacf34cbc985317ee51106b57286b9e2369b..b5c963723dfb6764bf5cfc4acc2f80c6d2f1eb8b 100644
--- a/cmake/modules/CMakeLists.txt
+++ b/cmake/modules/CMakeLists.txt
@@ -10,5 +10,5 @@
 #   René Fritze     (2018)
 # ~~~
 
-set(modules DuneGdtMacros.cmake)
-install(FILES "${modules}" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/modules)
+set(_modules DuneGdtMacros.cmake)
+install(FILES "${_modules}" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/modules)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 3fa7dac5f82dfd5f1a51067838938c2c4c5d5533..6700856c618d2016efa384884633823101b37a43 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -11,34 +11,21 @@
 #   Tobias Leibner  (2018)
 # ~~~
 
-macro(cleanup_target_name arg)
-  string(REPLACE ${PROJECT_SOURCE_DIR}
-                 ""
-                 targname
-                 ${arg})
-  string(REPLACE ".cc"
-                 ""
-                 targname
-                 ${targname})
-  string(REGEX
-         REPLACE "/"
-                 "__"
-                 targname
-                 ${targname})
-  string(REGEX
-         REPLACE "^__"
-                 ""
-                 targname
-                 ${targname})
-endmacro(cleanup_target_name)
+# Removes directory path, .cc suffix and leading __, replaces / with __
+macro(CLEANUP_TARGET_NAME arg)
+  string(REPLACE ${PROJECT_SOURCE_DIR} "" _targname ${arg})
+  string(REPLACE ".cc" "" _targname ${_targname})
+  string(REGEX REPLACE "/" "__" _targname ${_targname})
+  string(REGEX REPLACE "^__" "" _targname ${_targname})
+endmacro(CLEANUP_TARGET_NAME)
 
 file(GLOB_RECURSE example_sources "${CMAKE_CURRENT_SOURCE_DIR}/*.cc")
 foreach(source ${example_sources}) # do some name conversion
-  set(targname ${source})
-  cleanup_target_name(${targname})
-  add_executable(${targname} ${source})
-  list(APPEND examples_targets ${targname})
+  set(_targname ${source})
+  cleanup_target_name(${_targname})
+  add_executable(${_targname} ${source})
+  list(APPEND examples_targets ${_targname})
 endforeach(source ${example_sources})
 
-add_custom_target(examples)
+add_custom_target(examples COMMENT "Selected examples showing some of dune-gdt's features.")
 add_dependencies(examples ${examples_targets})
diff --git a/python/dune/gdt/CMakeLists.txt b/python/dune/gdt/CMakeLists.txt
index c59e2cdd2997cc00b4d66a94be2ea7c57bd0256c..f7e96731d9a773a0ce26187701309f5a1bfd34f0 100644
--- a/python/dune/gdt/CMakeLists.txt
+++ b/python/dune/gdt/CMakeLists.txt
@@ -13,9 +13,7 @@
 
 file(GLOB_RECURSE header "*.hh")
 
-dune_pybindxi_add_module(_discretefunction_discretefunction
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_discretefunction_discretefunction EXCLUDE_FROM_ALL ${header}
                          discretefunction/discretefunction.cc)
 dune_pybindxi_add_module(_discretefunction_dof_vector EXCLUDE_FROM_ALL ${header} discretefunction/dof-vector.cc)
 dune_pybindxi_add_module(_functionals_interfaces_common EXCLUDE_FROM_ALL ${header} functionals/interfaces_common.cc)
@@ -25,136 +23,72 @@ dune_pybindxi_add_module(_functionals_vector_based EXCLUDE_FROM_ALL ${header} fu
 dune_pybindxi_add_module(_interpolations_boundary EXCLUDE_FROM_ALL ${header} interpolations/boundary.cc)
 dune_pybindxi_add_module(_interpolations_default EXCLUDE_FROM_ALL ${header} interpolations/default.cc)
 dune_pybindxi_add_module(_interpolations_oswald EXCLUDE_FROM_ALL ${header} interpolations/oswald.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_coupling_intersection_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_coupling_intersection_integrals EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/coupling_intersection_integrals.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_coupling_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_coupling_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/coupling_intersection_interface.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_element_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_element_integrals EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/element_integrals.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_element_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_element_interface EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/element_interface.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_intersection_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_intersection_integrals EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/intersection_integrals.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/intersection_interface.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_restricted_coupling_intersection_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_restricted_coupling_intersection_integrals EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/restricted_coupling_intersection_integrals.cc)
-dune_pybindxi_add_module(_local_bilinear_forms_restricted_intersection_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_bilinear_forms_restricted_intersection_integrals EXCLUDE_FROM_ALL ${header}
                          local/bilinear-forms/restricted_intersection_integrals.cc)
-dune_pybindxi_add_module(_local_functionals_element_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_functionals_element_integrals EXCLUDE_FROM_ALL ${header}
                          local/functionals/element_integrals.cc)
-dune_pybindxi_add_module(_local_functionals_element_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_functionals_element_interface EXCLUDE_FROM_ALL ${header}
                          local/functionals/element_interface.cc)
-dune_pybindxi_add_module(_local_functionals_intersection_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_functionals_intersection_integrals EXCLUDE_FROM_ALL ${header}
                          local/functionals/intersection_integrals.cc)
-dune_pybindxi_add_module(_local_functionals_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_functionals_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/functionals/intersection_interface.cc)
-dune_pybindxi_add_module(_local_functionals_restricted_intersection_integrals
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_functionals_restricted_intersection_integrals EXCLUDE_FROM_ALL ${header}
                          local/functionals/restricted_intersection_integrals.cc)
-dune_pybindxi_add_module(_local_integrands_binary_element_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_binary_element_interface EXCLUDE_FROM_ALL ${header}
                          local/integrands/binary_element_interface.cc)
-dune_pybindxi_add_module(_local_integrands_binary_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_binary_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/integrands/binary_intersection_interface.cc)
-dune_pybindxi_add_module(_local_integrands_element_product
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_element_product EXCLUDE_FROM_ALL ${header}
                          local/integrands/element_product.cc)
-dune_pybindxi_add_module(_local_integrands_intersection_product
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_intersection_product EXCLUDE_FROM_ALL ${header}
                          local/integrands/intersection_product.cc)
-dune_pybindxi_add_module(_local_integrands_ipdg_boundary_penalty
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_ipdg_boundary_penalty EXCLUDE_FROM_ALL ${header}
                          local/integrands/ipdg_boundary_penalty.cc)
-dune_pybindxi_add_module(_local_integrands_ipdg_inner_penalty
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_ipdg_inner_penalty EXCLUDE_FROM_ALL ${header}
                          local/integrands/ipdg_inner_penalty.cc)
 dune_pybindxi_add_module(_local_integrands_jump_boundary EXCLUDE_FROM_ALL ${header} local/integrands/jump_boundary.cc)
 dune_pybindxi_add_module(_local_integrands_jump_inner EXCLUDE_FROM_ALL ${header} local/integrands/jump_inner.cc)
 dune_pybindxi_add_module(_local_integrands_laplace EXCLUDE_FROM_ALL ${header} local/integrands/laplace.cc)
-dune_pybindxi_add_module(_local_integrands_laplace_ipdg_dirichlet_coupling
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_laplace_ipdg_dirichlet_coupling EXCLUDE_FROM_ALL ${header}
                          local/integrands/laplace_ipdg_dirichlet_coupling.cc)
-dune_pybindxi_add_module(_local_integrands_laplace_ipdg_inner_coupling
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_laplace_ipdg_inner_coupling EXCLUDE_FROM_ALL ${header}
                          local/integrands/laplace_ipdg_inner_coupling.cc)
-dune_pybindxi_add_module(_local_integrands_linear_advection
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_linear_advection EXCLUDE_FROM_ALL ${header}
                          local/integrands/linear_advection.cc)
-dune_pybindxi_add_module(_local_integrands_linear_advection_upwind_dirichlet_coupling
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_linear_advection_upwind_dirichlet_coupling EXCLUDE_FROM_ALL ${header}
                          local/integrands/linear_advection_upwind_dirichlet_coupling.cc)
-dune_pybindxi_add_module(_local_integrands_linear_advection_upwind_inner_coupling
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_linear_advection_upwind_inner_coupling EXCLUDE_FROM_ALL ${header}
                          local/integrands/linear_advection_upwind_inner_coupling.cc)
-dune_pybindxi_add_module(_local_integrands_quaternary_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_quaternary_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/integrands/quaternary_intersection_interface.cc)
-dune_pybindxi_add_module(_local_integrands_unary_element_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_unary_element_interface EXCLUDE_FROM_ALL ${header}
                          local/integrands/unary_element_interface.cc)
-dune_pybindxi_add_module(_local_integrands_unary_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_integrands_unary_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/integrands/unary_intersection_interface.cc)
-dune_pybindxi_add_module(_local_operators_coupling_intersection_indicator
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_operators_coupling_intersection_indicator EXCLUDE_FROM_ALL ${header}
                          local/operators/coupling_intersection_indicator.cc)
-dune_pybindxi_add_module(_local_operators_element_indicator
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_operators_element_indicator EXCLUDE_FROM_ALL ${header}
                          local/operators/element_indicator.cc)
-dune_pybindxi_add_module(_local_operators_element_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_operators_element_interface EXCLUDE_FROM_ALL ${header}
                          local/operators/element_interface.cc)
-dune_pybindxi_add_module(_local_operators_intersection_indicator
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_operators_intersection_indicator EXCLUDE_FROM_ALL ${header}
                          local/operators/intersection_indicator.cc)
-dune_pybindxi_add_module(_local_operators_intersection_interface
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_local_operators_intersection_interface EXCLUDE_FROM_ALL ${header}
                          local/operators/intersection_interface.cc)
 dune_pybindxi_add_module(_operators_bilinear_form EXCLUDE_FROM_ALL ${header} operators/bilinear-form.cc)
 dune_pybindxi_add_module(_operators_interfaces_common EXCLUDE_FROM_ALL ${header} operators/interfaces_common.cc)
@@ -162,9 +96,7 @@ dune_pybindxi_add_module(_operators_interfaces_eigen EXCLUDE_FROM_ALL ${header}
 dune_pybindxi_add_module(_operators_interfaces_istl_1d EXCLUDE_FROM_ALL ${header} operators/interfaces_istl_1d.cc)
 dune_pybindxi_add_module(_operators_interfaces_istl_2d EXCLUDE_FROM_ALL ${header} operators/interfaces_istl_2d.cc)
 dune_pybindxi_add_module(_operators_interfaces_istl_3d EXCLUDE_FROM_ALL ${header} operators/interfaces_istl_3d.cc)
-dune_pybindxi_add_module(_operators_laplace_ipdg_flux_reconstruction
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_operators_laplace_ipdg_flux_reconstruction EXCLUDE_FROM_ALL ${header}
                          operators/laplace_ipdg_flux_reconstruction.cc)
 dune_pybindxi_add_module(_operators_matrix_based_factory EXCLUDE_FROM_ALL ${header} operators/matrix-based_factory.cc)
 dune_pybindxi_add_module(_operators_operator EXCLUDE_FROM_ALL ${header} operators/operator.cc)
@@ -172,9 +104,7 @@ dune_pybindxi_add_module(_prolongations EXCLUDE_FROM_ALL ${header} prolongations
 dune_pybindxi_add_module(_spaces_h1_continuous_lagrange EXCLUDE_FROM_ALL ${header} spaces/h1/continuous-lagrange.cc)
 dune_pybindxi_add_module(_spaces_hdiv_raviart_thomas EXCLUDE_FROM_ALL ${header} spaces/hdiv/raviart-thomas.cc)
 dune_pybindxi_add_module(_spaces_interface EXCLUDE_FROM_ALL ${header} spaces/interface.cc)
-dune_pybindxi_add_module(_spaces_l2_discontinuous_lagrange
-                         EXCLUDE_FROM_ALL
-                         ${header}
+dune_pybindxi_add_module(_spaces_l2_discontinuous_lagrange EXCLUDE_FROM_ALL ${header}
                          spaces/l2/discontinuous-lagrange.cc)
 dune_pybindxi_add_module(_spaces_l2_finite_volume EXCLUDE_FROM_ALL ${header} spaces/l2/finite-volume.cc)
 dune_pybindxi_add_module(_spaces_skeleton_finite_volume EXCLUDE_FROM_ALL ${header} spaces/skeleton/finite-volume.cc)