diff --git a/python/dune/xt/CMakeLists.txt b/python/dune/xt/CMakeLists.txt
index 74941efd4cb610d6c55de8fdf60ca625092fd3b3..f75a22870bb69dd338669d1b0e29ed68bb5743e8 100644
--- a/python/dune/xt/CMakeLists.txt
+++ b/python/dune/xt/CMakeLists.txt
@@ -12,7 +12,7 @@
 #   Tobias Leibner  (2019)
 # ~~~
 
-add_subdirectory(grid)
 add_subdirectory(common)
-add_subdirectory(la)
 add_subdirectory(functions)
+add_subdirectory(grid)
+add_subdirectory(la)
diff --git a/python/dune/xt/common/CMakeLists.txt b/python/dune/xt/common/CMakeLists.txt
index c8a019eaa30f3f989669c1ea4a3ca6d5dfe63575..993bbd2c7e1b6410d40316bb5a6d7f5255f88267 100644
--- a/python/dune/xt/common/CMakeLists.txt
+++ b/python/dune/xt/common/CMakeLists.txt
@@ -14,7 +14,7 @@
 dune_pybindxi_add_module(logging EXCLUDE_FROM_ALL logging.cc)
 dune_pybindxi_add_module(timedlogging EXCLUDE_FROM_ALL timedlogging.cc)
 
-dune_pybindxi_add_module(_empty EXCLUDE_FROM_ALL empty.cc)
-dune_pybindxi_add_module(_exceptions EXCLUDE_FROM_ALL exceptions.cc)
-dune_pybindxi_add_module(_mpi EXCLUDE_FROM_ALL mpi.cc)
-dune_pybindxi_add_module(_timings EXCLUDE_FROM_ALL timings.cc)
+dune_pybindxi_add_module(_common_empty EXCLUDE_FROM_ALL empty.cc)
+dune_pybindxi_add_module(_common_exceptions EXCLUDE_FROM_ALL exceptions.cc)
+dune_pybindxi_add_module(_common_mpi EXCLUDE_FROM_ALL mpi.cc)
+dune_pybindxi_add_module(_common_timings EXCLUDE_FROM_ALL timings.cc)
diff --git a/python/dune/xt/common/__init__.py b/python/dune/xt/common/__init__.py
index 0fad39f1430813bb650f2aa7b41ba282b1a6142d..bea1dd79179bf83fdf2ca6c272c2363e9780d783 100644
--- a/python/dune/xt/common/__init__.py
+++ b/python/dune/xt/common/__init__.py
@@ -14,7 +14,7 @@
 from dune.xt import guarded_import
 
 for mod_name in (
-        '_exceptions',
-        '_mpi',
+        '_common_exceptions',
+        '_common_mpi',
 ):
     guarded_import(globals(), 'dune.xt.common', mod_name)
diff --git a/python/dune/xt/common/empty.cc b/python/dune/xt/common/empty.cc
index 5532dd8cef357bcd488010c492ff07928d6499cd..67de967c644a24530aa65b6ce2bdcce202617b69 100644
--- a/python/dune/xt/common/empty.cc
+++ b/python/dune/xt/common/empty.cc
@@ -57,7 +57,8 @@ struct Terrier : Dog
   {}
 };
 
-PYBIND11_MODULE(_empty, m)
+
+PYBIND11_MODULE(_common_empty, m)
 {
   namespace py = pybind11;
   using namespace pybind11::literals;
diff --git a/python/dune/xt/common/exceptions.cc b/python/dune/xt/common/exceptions.cc
index 7f9c20d777cefcdb3e1460211da95cf3fbef481c..195fc031dafceb9b886b69bd72bcfd14b07a3499 100644
--- a/python/dune/xt/common/exceptions.cc
+++ b/python/dune/xt/common/exceptions.cc
@@ -24,7 +24,7 @@
 #include <dune/pybindxi/stl.h>
 
 
-PYBIND11_MODULE(_exceptions, m)
+PYBIND11_MODULE(_common_exceptions, m)
 {
   namespace py = pybind11;
   using namespace pybind11::literals;
diff --git a/python/dune/xt/common/mpi.cc b/python/dune/xt/common/mpi.cc
index aefdbabcaa4e4b715b666e87b5aad8e71b4aa615..f46f78ff0678d1ee29dd5dc1eeffbd78453ac9b3 100644
--- a/python/dune/xt/common/mpi.cc
+++ b/python/dune/xt/common/mpi.cc
@@ -35,7 +35,7 @@
 #include <dune/xt/common/string.hh>
 
 
-PYBIND11_MODULE(_mpi, m)
+PYBIND11_MODULE(_common_mpi, m)
 {
   using namespace Dune;
   namespace py = pybind11;
diff --git a/python/dune/xt/common/timings.cc b/python/dune/xt/common/timings.cc
index 6f88a233ca7992073bb0f4e71ba571deeb680044..22bae4f4b85194f846303c8f2ff4ca297db0c2f5 100644
--- a/python/dune/xt/common/timings.cc
+++ b/python/dune/xt/common/timings.cc
@@ -24,7 +24,7 @@
 #include <dune/common/parallel/mpihelper.hh>
 
 
-PYBIND11_MODULE(_timings, m)
+PYBIND11_MODULE(_common_timings, m)
 {
   namespace py = pybind11;
   using namespace pybind11::literals;
diff --git a/python/dune/xt/common/timings.py b/python/dune/xt/common/timings.py
index 941d4b2b33aa7df46b0433a475b0ac531d304164..836066f6f3fd16b1449afd7c7bd1e6744e0702d2 100644
--- a/python/dune/xt/common/timings.py
+++ b/python/dune/xt/common/timings.py
@@ -13,6 +13,6 @@
 
 from dune.xt import guarded_import
 
-guarded_import(globals(), 'dune.xt.common', '_timings')
+guarded_import(globals(), 'dune.xt.common', '_common_timings')
 
 instance()
diff --git a/python/dune/xt/functions/CMakeLists.txt b/python/dune/xt/functions/CMakeLists.txt
index 5d5d3cea431872b94d50bf76ac1f00cb30de4886..badd67b0971ad8fbcf639f3382637b3f6ff7af0f 100644
--- a/python/dune/xt/functions/CMakeLists.txt
+++ b/python/dune/xt/functions/CMakeLists.txt
@@ -12,15 +12,15 @@
 #   Tobias Leibner  (2019)
 # ~~~
 
-dune_pybindxi_add_module(_function_interface_1d EXCLUDE_FROM_ALL function-interface-1d.cc)
-dune_pybindxi_add_module(_function_interface_2d EXCLUDE_FROM_ALL function-interface-2d.cc)
-dune_pybindxi_add_module(_function_interface_3d EXCLUDE_FROM_ALL function-interface-3d.cc)
-dune_pybindxi_add_module(_gridfunction_interface_1d EXCLUDE_FROM_ALL gridfunction-interface-1d.cc)
-dune_pybindxi_add_module(_gridfunction_interface_2d EXCLUDE_FROM_ALL gridfunction-interface-2d.cc)
-dune_pybindxi_add_module(_gridfunction_interface_3d EXCLUDE_FROM_ALL gridfunction-interface-3d.cc)
-dune_pybindxi_add_module(_checkerboard EXCLUDE_FROM_ALL checkerboard.cc)
-dune_pybindxi_add_module(_constant EXCLUDE_FROM_ALL constant.cc)
-dune_pybindxi_add_module(_expression EXCLUDE_FROM_ALL expression.cc)
-dune_pybindxi_add_module(_function_as_grid_function EXCLUDE_FROM_ALL function-as-grid-function.cc)
-dune_pybindxi_add_module(_indicator EXCLUDE_FROM_ALL indicator.cc)
-dune_pybindxi_add_module(_spe10 EXCLUDE_FROM_ALL spe10.cc)
+dune_pybindxi_add_module(_functions_function_interface_1d EXCLUDE_FROM_ALL function-interface-1d.cc)
+dune_pybindxi_add_module(_functions_function_interface_2d EXCLUDE_FROM_ALL function-interface-2d.cc)
+dune_pybindxi_add_module(_functions_function_interface_3d EXCLUDE_FROM_ALL function-interface-3d.cc)
+dune_pybindxi_add_module(_functions_gridfunction_interface_1d EXCLUDE_FROM_ALL gridfunction-interface-1d.cc)
+dune_pybindxi_add_module(_functions_gridfunction_interface_2d EXCLUDE_FROM_ALL gridfunction-interface-2d.cc)
+dune_pybindxi_add_module(_functions_gridfunction_interface_3d EXCLUDE_FROM_ALL gridfunction-interface-3d.cc)
+dune_pybindxi_add_module(_functions_checkerboard EXCLUDE_FROM_ALL checkerboard.cc)
+dune_pybindxi_add_module(_functions_constant EXCLUDE_FROM_ALL constant.cc)
+dune_pybindxi_add_module(_functions_expression EXCLUDE_FROM_ALL expression.cc)
+dune_pybindxi_add_module(_functions_function_as_grid_function EXCLUDE_FROM_ALL function-as-grid-function.cc)
+dune_pybindxi_add_module(_functions_indicator EXCLUDE_FROM_ALL indicator.cc)
+dune_pybindxi_add_module(_functions_spe10 EXCLUDE_FROM_ALL spe10.cc)
diff --git a/python/dune/xt/functions/__init__.py b/python/dune/xt/functions/__init__.py
index 33d3dc83e9e68f9a3fb89f2d358871cc5e386f37..3485f09d11304405943ef8e0e5c3b977618da0c9 100644
--- a/python/dune/xt/functions/__init__.py
+++ b/python/dune/xt/functions/__init__.py
@@ -12,40 +12,21 @@
 #   Tobias Leibner  (2019)
 # ~~~
 
-from importlib import import_module
+from dune.xt import guarded_import
 
-import dune.xt.common
-import dune.xt.la
-import dune.xt.grid
+for mod_name in (
+    '_functions_function_interface_1d',
+    '_functions_function_interface_2d',
+    '_functions_function_interface_3d',
+    '_functions_gridfunction_interface_1d',
+    '_functions_gridfunction_interface_2d',
+    '_functions_gridfunction_interface_3d',
+    '_functions_checkerboard',
+    '_functions_constant',
+    '_functions_expression',
+    '_functions_function_as_grid_function',
+    '_functions_indicator',
+    '_functions_spe10',
+    ):
+    guarded_import(globals(), 'dune.xt.functions', mod_name)
 
-_modules = (
-    '_function_interface_1d',
-    '_function_interface_2d',
-    '_function_interface_3d',
-    '_gridfunction_interface_1d',
-    '_gridfunction_interface_2d',
-    '_gridfunction_interface_3d',
-    '_checkerboard',
-    '_constant',
-    '_expression',
-    '_function_as_grid_function',
-    '_indicator',
-    '_spe10',
-)
-
-# see https://stackoverflow.com/questions/43059267/how-to-do-from-module-import-using-importlib
-for mod_name in _modules:
-    try:
-        mod = import_module('.{}'.format(mod_name), 'dune.xt.functions')
-        if "__all__" in mod.__dict__:
-            names = mod.__dict__["__all__"]
-        else:
-            # otherwise we import all names that don't begin with _
-            names = [x for x in mod.__dict__ if not x.startswith("_")]
-        globals().update({k: getattr(mod, k) for k in names})
-    except ImportError as e:
-        import os
-        import logging
-        if os.environ.get('DXT_PYTHON_DEBUG', False):
-            raise e
-        logging.error('dune-xt-functions: could not import {} module'.format(mod_name))
diff --git a/python/dune/xt/functions/checkerboard.cc b/python/dune/xt/functions/checkerboard.cc
index 7b22187acda91d60962123a2afe1b6cf28bc3137..42fdbad618a470824aefb5a0053c1112e463650b 100644
--- a/python/dune/xt/functions/checkerboard.cc
+++ b/python/dune/xt/functions/checkerboard.cc
@@ -54,16 +54,16 @@ void all_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_checkerboard, m)
+PYBIND11_MODULE(_functions_checkerboard, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._gridfunction_interface_1d");
-  py::module::import("dune.xt.functions._gridfunction_interface_2d");
-  py::module::import("dune.xt.functions._gridfunction_interface_3d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_1d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_2d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_3d");
 
   all_grids(m);
 } // PYBIND11_MODULE(...)
diff --git a/python/dune/xt/functions/constant.cc b/python/dune/xt/functions/constant.cc
index c6ad9a61c240c776ca25ae993ffa2c7f21c278db..398d784ebc132f3102ceac57cf28440216416928 100644
--- a/python/dune/xt/functions/constant.cc
+++ b/python/dune/xt/functions/constant.cc
@@ -23,15 +23,15 @@
 #include "constant.hh"
 
 
-PYBIND11_MODULE(_constant, m)
+PYBIND11_MODULE(_functions_constant, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
-  py::module::import("dune.xt.functions._function_interface_1d");
-  py::module::import("dune.xt.functions._function_interface_2d");
-  py::module::import("dune.xt.functions._function_interface_3d");
+  py::module::import("dune.xt.functions._functions_function_interface_1d");
+  py::module::import("dune.xt.functions._functions_function_interface_2d");
+  py::module::import("dune.xt.functions._functions_function_interface_3d");
 
   using namespace Dune::XT::Functions;
 
diff --git a/python/dune/xt/functions/expression.cc b/python/dune/xt/functions/expression.cc
index 8a1b645af4eafaff615b67935be37ebb1c2742ed..0b44fe9aa0844e9e2164b76626d89b98b4b45d8f 100644
--- a/python/dune/xt/functions/expression.cc
+++ b/python/dune/xt/functions/expression.cc
@@ -23,15 +23,15 @@
 #include "expression.hh"
 
 
-PYBIND11_MODULE(_expression, m)
+PYBIND11_MODULE(_functions_expression, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
-  py::module::import("dune.xt.functions._function_interface_1d");
-  py::module::import("dune.xt.functions._function_interface_2d");
-  py::module::import("dune.xt.functions._function_interface_3d");
+  py::module::import("dune.xt.functions._functions_function_interface_1d");
+  py::module::import("dune.xt.functions._functions_function_interface_2d");
+  py::module::import("dune.xt.functions._functions_function_interface_3d");
 
   using namespace Dune::XT::Functions;
 
diff --git a/python/dune/xt/functions/function-as-grid-function.cc b/python/dune/xt/functions/function-as-grid-function.cc
index fd3639ec7c586d531946a1dd449182bbf3234a29..a976bda4b8aead000eeaafa2305125a94586f15c 100644
--- a/python/dune/xt/functions/function-as-grid-function.cc
+++ b/python/dune/xt/functions/function-as-grid-function.cc
@@ -54,16 +54,19 @@ void all_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_function_as_grid_function, m)
+PYBIND11_MODULE(_functions_function_as_grid_function, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._gridfunction_interface_1d");
-  py::module::import("dune.xt.functions._gridfunction_interface_2d");
-  py::module::import("dune.xt.functions._gridfunction_interface_3d");
+  py::module::import("dune.xt.functions._functions_function_interface_1d");
+  py::module::import("dune.xt.functions._functions_function_interface_2d");
+  py::module::import("dune.xt.functions._functions_function_interface_3d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_1d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_2d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_3d");
 
   all_grids(m);
 }
diff --git a/python/dune/xt/functions/function-interface-1d.cc b/python/dune/xt/functions/function-interface-1d.cc
index 5b1de0ff6e833171dda84d58f47f44387bd4bea6..a0a84547ed84976830677d450342dd30d8ad0b4a 100644
--- a/python/dune/xt/functions/function-interface-1d.cc
+++ b/python/dune/xt/functions/function-interface-1d.cc
@@ -23,7 +23,7 @@
 #include "function-interface.hh"
 
 
-PYBIND11_MODULE(_function_interface_1d, m)
+PYBIND11_MODULE(_functions_function_interface_1d, m)
 {
   namespace py = pybind11;
 
diff --git a/python/dune/xt/functions/function-interface-2d.cc b/python/dune/xt/functions/function-interface-2d.cc
index a8fe75642eec66747676d5186b76c84b0a6ceeb2..3e44773ccafc3ee49bbb8d926625698ac71aaa7e 100644
--- a/python/dune/xt/functions/function-interface-2d.cc
+++ b/python/dune/xt/functions/function-interface-2d.cc
@@ -23,7 +23,7 @@
 #include "function-interface.hh"
 
 
-PYBIND11_MODULE(_function_interface_2d, m)
+PYBIND11_MODULE(_functions_function_interface_2d, m)
 {
   namespace py = pybind11;
 
diff --git a/python/dune/xt/functions/function-interface-3d.cc b/python/dune/xt/functions/function-interface-3d.cc
index 3e92818ffe318df35553a87514c1f81ebd6cccac..5bc2c6fc531d66d3782020453275ea394a0d67e8 100644
--- a/python/dune/xt/functions/function-interface-3d.cc
+++ b/python/dune/xt/functions/function-interface-3d.cc
@@ -23,7 +23,7 @@
 #include "function-interface.hh"
 
 
-PYBIND11_MODULE(_function_interface_3d, m)
+PYBIND11_MODULE(_functions_function_interface_3d, m)
 {
   namespace py = pybind11;
 
diff --git a/python/dune/xt/functions/gridfunction-interface-1d.cc b/python/dune/xt/functions/gridfunction-interface-1d.cc
index 65186c5dc62f0627961923de13c099586e9dc3df..7c6b4a8e24816d7dc3eb5079518e45d91b8f6201 100644
--- a/python/dune/xt/functions/gridfunction-interface-1d.cc
+++ b/python/dune/xt/functions/gridfunction-interface-1d.cc
@@ -38,14 +38,14 @@ void bind_all_1d_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_gridfunction_interface_1d, m)
+PYBIND11_MODULE(_functions_gridfunction_interface_1d, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._function_interface_1d");
+  py::module::import("dune.xt.functions._functions_function_interface_1d");
 
   bind_all_1d_grids(m);
 } // PYBIND11_MODULE(...)
diff --git a/python/dune/xt/functions/gridfunction-interface-2d.cc b/python/dune/xt/functions/gridfunction-interface-2d.cc
index 22a010f7662de7029d29bc26507dcff86a313990..05c0397bc5344018c7ace45555535dd2f3bd2ca6 100644
--- a/python/dune/xt/functions/gridfunction-interface-2d.cc
+++ b/python/dune/xt/functions/gridfunction-interface-2d.cc
@@ -38,14 +38,14 @@ void bind_all_2d_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_gridfunction_interface_2d, m)
+PYBIND11_MODULE(_functions_gridfunction_interface_2d, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._function_interface_2d");
+  py::module::import("dune.xt.functions._functions_function_interface_2d");
 
   bind_all_2d_grids(m);
 } // PYBIND11_MODULE(...)
diff --git a/python/dune/xt/functions/gridfunction-interface-3d.cc b/python/dune/xt/functions/gridfunction-interface-3d.cc
index f23e7701ff9cb1addd882b63c1bdfb479d458d2a..217f5ec41f5ef6e6308048d537fee4f99f3257b5 100644
--- a/python/dune/xt/functions/gridfunction-interface-3d.cc
+++ b/python/dune/xt/functions/gridfunction-interface-3d.cc
@@ -38,14 +38,14 @@ void bind_all_3d_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_gridfunction_interface_3d, m)
+PYBIND11_MODULE(_functions_gridfunction_interface_3d, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._function_interface_3d");
+  py::module::import("dune.xt.functions._functions_function_interface_3d");
 
   bind_all_3d_grids(m);
 } // PYBIND11_MODULE(...)
diff --git a/python/dune/xt/functions/indicator.cc b/python/dune/xt/functions/indicator.cc
index 4e0dbb48d1e59ebb3b53807bd7ed5564ea46b2d7..a9e06be818be1973bdd89ca237fcd0282cab6f36 100644
--- a/python/dune/xt/functions/indicator.cc
+++ b/python/dune/xt/functions/indicator.cc
@@ -54,16 +54,16 @@ void all_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_indicator, m)
+PYBIND11_MODULE(_functions_indicator, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._gridfunction_interface_1d");
-  py::module::import("dune.xt.functions._gridfunction_interface_2d");
-  py::module::import("dune.xt.functions._gridfunction_interface_3d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_1d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_2d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_3d");
 
   all_grids(m);
 
diff --git a/python/dune/xt/functions/spe10.cc b/python/dune/xt/functions/spe10.cc
index 59cd2f3925e2db3b667be8b0afb90f231f1d3447..7a518b7ee4461ccf7bb2de5c90a9182b79ee921a 100644
--- a/python/dune/xt/functions/spe10.cc
+++ b/python/dune/xt/functions/spe10.cc
@@ -51,16 +51,16 @@ void all_grids<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_spe10, m)
+PYBIND11_MODULE(_functions_spe10, m)
 {
   namespace py = pybind11;
 
   py::module::import("dune.xt.common");
   py::module::import("dune.xt.la");
   py::module::import("dune.xt.grid");
-  py::module::import("dune.xt.functions._gridfunction_interface_1d");
-  py::module::import("dune.xt.functions._gridfunction_interface_2d");
-  py::module::import("dune.xt.functions._gridfunction_interface_3d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_1d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_2d");
+  py::module::import("dune.xt.functions._functions_gridfunction_interface_3d");
 
   all_grids(m);
 }
diff --git a/python/dune/xt/grid/CMakeLists.txt b/python/dune/xt/grid/CMakeLists.txt
index ee5e86ef7edb0e17f3020daa6913bb5c3df382c6..e0912a2094fc9a0c24023458240685514e54050f 100644
--- a/python/dune/xt/grid/CMakeLists.txt
+++ b/python/dune/xt/grid/CMakeLists.txt
@@ -12,9 +12,9 @@
 #   Tobias Leibner  (2019)
 # ~~~
 
-dune_pybindxi_add_module(_boundaryinfo EXCLUDE_FROM_ALL boundaryinfo.cc)
-dune_pybindxi_add_module(_types EXCLUDE_FROM_ALL types.cc)
-dune_pybindxi_add_module(_walker EXCLUDE_FROM_ALL walker.cc)
+dune_pybindxi_add_module(_grid_boundaryinfo EXCLUDE_FROM_ALL boundaryinfo.cc)
 dune_pybindxi_add_module(_grid_gridprovider_cube EXCLUDE_FROM_ALL gridprovider/cube.cc)
 dune_pybindxi_add_module(_grid_gridprovider_provider EXCLUDE_FROM_ALL gridprovider/provider.cc)
 dune_pybindxi_add_module(_grid_traits EXCLUDE_FROM_ALL traits.cc)
+dune_pybindxi_add_module(_grid_types EXCLUDE_FROM_ALL types.cc)
+dune_pybindxi_add_module(_grid_walker EXCLUDE_FROM_ALL walker.cc)
diff --git a/python/dune/xt/grid/__init__.py b/python/dune/xt/grid/__init__.py
index b305efc58dc1a94b949e122413a8a2dc55e8a171..5e4a2aeec6f3d918e92ae6d010fe1def3105f8c3 100644
--- a/python/dune/xt/grid/__init__.py
+++ b/python/dune/xt/grid/__init__.py
@@ -11,17 +11,28 @@
 #   Tobias Leibner  (2019)
 # ~~~
 
+from numbers import Number
+
 from dune.xt import guarded_import
 
 for mod_name in (
-        '_boundaryinfo',
-        '_types',
-        '_walker',
-        '_provider',
+            '_grid_boundaryinfo',
+            '_grid_gridprovider_cube',
+            '_grid_gridprovider_provider',
+            '_grid_traits',
+            '_grid_types',
+            '_grid_walker',
 ):
     guarded_import(globals(), 'dune.xt.grid', mod_name)
 
 
+def Dim(d):
+    assert isinstance(d, Number)
+    if f'Dimension{d}' not in globals():
+        raise RuntimeError(f'Dimension {d} not available, extend <python/dune/xt/grid/traits.cc>!')
+    return globals()[f'Dimension{d}']()
+
+
 def make_walker(gridprovider, level=0):
     for factory in [globals()[s] for s in globals().keys() if s.startswith('make_walker_on_')]:
         try:
diff --git a/python/dune/xt/grid/types.cc b/python/dune/xt/grid/types.cc
index 22692a5cf033a8545e11ef5c25e8bc2e3d82e71e..7f43c3c6d0f162dd93ba6e61e54f335f47889691 100644
--- a/python/dune/xt/grid/types.cc
+++ b/python/dune/xt/grid/types.cc
@@ -41,7 +41,7 @@ template <>
 void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&, std::vector<std::string>&)
 {}
 
-PYBIND11_MODULE(_types, m)
+PYBIND11_MODULE(_grid_types, m)
 {
   namespace py = pybind11;
 
diff --git a/python/dune/xt/grid/walker.cc b/python/dune/xt/grid/walker.cc
index 8ea5b973d3ec44a1372ce0dd1d3fc276da146f8f..e50e2a26083e11a04d29713fe6cbcb7f5c5e4ea4 100644
--- a/python/dune/xt/grid/walker.cc
+++ b/python/dune/xt/grid/walker.cc
@@ -57,7 +57,7 @@ void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&)
 {}
 
 
-PYBIND11_MODULE(_walker, m)
+PYBIND11_MODULE(_grid_walker, m)
 {
   namespace py = pybind11;