diff --git a/python/dune/perftool/generation/__init__.py b/python/dune/perftool/generation/__init__.py
index 934208c8741376e7f205414e309b2ea79e59452f..1b084cbc18ac34b4b1193d3c45ed841d0766884a 100644
--- a/python/dune/perftool/generation/__init__.py
+++ b/python/dune/perftool/generation/__init__.py
@@ -12,6 +12,7 @@ from dune.perftool.generation.cache import (cached,
 from dune.perftool.generation.cpp import (base_class,
                                           class_basename,
                                           class_member,
+                                          constructor_block,
                                           constructor_parameter,
                                           dump_accumulate_timer,
                                           include_file,
diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py
index 166dc9fe3fe94e824558c10dd5bffcfbc9b138d7..ea8727be7c700898724cc0e7ad903c0a1a1fdd63 100644
--- a/python/dune/perftool/generation/cpp.py
+++ b/python/dune/perftool/generation/cpp.py
@@ -75,6 +75,12 @@ def class_basename(classtag=None):
     return generator_factory(item_tags=("clazz", classtag, "basename"))
 
 
+def constructor_block(classtag=None):
+    assert classtag
+    from dune.perftool.generation import generator_factory
+    return generator_factory(item_tags=("clazz", classtag, "constructor_block"), counted=True)
+
+
 def dump_accumulate_timer(name):
     gen = generator_factory(item_tags=("dump_timers"), no_deco=True)
 
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index 7936437e7163f81fad44d0782894895ebb58f49a..ed4d5a45aa3f68efe288c3dc6204f76b86844224 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -383,12 +383,14 @@ def cgen_class_from_cache(tag, members=[]):
 
     base_classes = [bc for bc in retrieve_cache_items('{} and baseclass'.format(tag))]
     constructor_params = [bc for bc in retrieve_cache_items('{} and constructor_param'.format(tag))]
+    from cgen import Block
+    constructor_block = Block(contents=[i for i in retrieve_cache_items("{} and constructor_block".format(tag), make_generable=True)])
     il = [i for i in retrieve_cache_items('{} and initializer'.format(tag))]
     pm = [m for m in retrieve_cache_items('{} and member'.format(tag))]
     tparams = [i for i in retrieve_cache_items('{} and template_param'.format(tag))]
 
     from dune.perftool.cgen.clazz import Constructor
-    constructor = Constructor(arg_decls=constructor_params, clsname=basename, initializer_list=il)
+    constructor = Constructor(block=constructor_block, arg_decls=constructor_params, clsname=basename, initializer_list=il)
 
     from dune.perftool.cgen import Class
     return Class(basename, base_classes=base_classes, members=members + pm, constructors=[constructor], tparam_decls=tparams)