diff --git a/python/dune/perftool/generation/__init__.py b/python/dune/perftool/generation/__init__.py
index 7801d1a1bd9982cb474ef1e750fe2a48d1721e6f..32463b4b1ccd0af0ececa244c5578b5ccc4a6d67 100644
--- a/python/dune/perftool/generation/__init__.py
+++ b/python/dune/perftool/generation/__init__.py
@@ -1,5 +1,9 @@
 from __future__ import absolute_import
 
+from dune.perftool.generation.backend import (backend,
+                                              get_backend,
+                                              )
+
 from dune.perftool.generation.counter import get_counter
 
 from dune.perftool.generation.cache import (cached,
diff --git a/python/dune/perftool/generation/backend.py b/python/dune/perftool/generation/backend.py
new file mode 100644
index 0000000000000000000000000000000000000000..a08c85b9663384a9ccb9f034dd851d1458e167a5
--- /dev/null
+++ b/python/dune/perftool/generation/backend.py
@@ -0,0 +1,16 @@
+""" Some decorators to implement a backend selection mechanism """
+
+_backend_mapping = {}
+
+
+def backend(name):
+    def _dec(func):
+        assert(name not in _backend_mapping)
+        _backend_mapping[name] = func
+        return func
+
+    return _dec
+
+
+def get_backend(name):
+    return _backend_mapping[name]