diff --git a/python/dune/perftool/compile.py b/python/dune/perftool/compile.py
index dd4b7b2641dbc87d7b91d63ec7df77af00571fc5..56ad0096c0996a114dfed091d749f12b2f7d441f 100644
--- a/python/dune/perftool/compile.py
+++ b/python/dune/perftool/compile.py
@@ -49,7 +49,7 @@ def read_ufl(uflfile):
 
     formdata.preprocessed_form = form
 
-    return formdata, data.object_names
+    return formdata, data
 
 
 def generate_driver(form, filename):
@@ -79,17 +79,17 @@ def generate_driver(form, filename):
 # This function is the entrypoint of the ufl2pdelab executable
 def compile_form():
     from dune.perftool.options import get_option
-    formdata, namedata = read_ufl(get_option("uflfile"))
+    formdata, data = read_ufl(get_option("uflfile"))
 
     from dune.perftool.generation import cache_context, global_context
-    with global_context(formdata=formdata, namedata=namedata):
+    with global_context(formdata=formdata, data=data):
         if get_option("driver_file"):
             with cache_context('driver', delete=True):
                 generate_driver(formdata.preprocessed_form, get_option("driver_file"))
 
         if get_option("operator_file"):
             from dune.perftool.pdelab.localoperator import generate_localoperator_kernels
-            kernels = generate_localoperator_kernels(formdata, namedata)
+            kernels = generate_localoperator_kernels(formdata, data)
 
         # TODO insert sophisticated analysis/feedback loops here
         if get_option("interactive"):
diff --git a/python/dune/perftool/loopy/transformer.py b/python/dune/perftool/loopy/transformer.py
index 9dec35bc7bb3e39d438a0d441a0f25e82b5be471..54938c547e06ccf743fdcac29594cd1eed7396da 100644
--- a/python/dune/perftool/loopy/transformer.py
+++ b/python/dune/perftool/loopy/transformer.py
@@ -148,7 +148,7 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker, UFL2PymbolicMapper, GeometryMapp
             subdomain_data = subdomains[self.measure]
 
             # Determine the name of the parameter function
-            name = get_global_context_value("namedata")[id(subdomain_data)]
+            name = get_global_context_value("data").object_names[id(subdomain_data)]
 
             # Trigger the generation of code for this thing in the parameter class
             from dune.perftool.pdelab.parameter import intersection_parameter_function
@@ -231,7 +231,7 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker, UFL2PymbolicMapper, GeometryMapp
 
             # Determine the name of the parameter function
             from dune.perftool.generation import get_global_context_value
-            name = get_global_context_value("namedata")[id(o)]
+            name = get_global_context_value("data").object_names[id(o)]
 
             # Trigger the generation of code for this thing in the parameter class
             from dune.perftool.pdelab.parameter import (cell_parameter_function,
diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py
index 7a31b5b45240925f8b2136ab364f81451db8596b..a20571f850473d9bf20f012cad1b6be4a7e5c7c2 100644
--- a/python/dune/perftool/pdelab/driver.py
+++ b/python/dune/perftool/pdelab/driver.py
@@ -433,7 +433,7 @@ def name_bctype_function(expr):
         element, (dirichlet, _) = get_constraints_metadata(expr)
         # get the correct name from the corresponding UFL file
         from dune.perftool.generation import get_global_context_value
-        name = get_global_context_value("namedata").get(id(dirichlet), "everywhere")
+        name = get_global_context_value("data").object_names.get(id(dirichlet), "everywhere")
         define_bctype_function(dirichlet, name)
         pgfs_name = '{}_{}'.format(name, expr.num_sub_elements())
         define_powergfs_constraints(pgfs_name, name, expr.num_sub_elements())
@@ -449,7 +449,7 @@ def name_bctype_function(expr):
 
     # get the correct name from the corresponding UFL file
     from dune.perftool.generation import get_global_context_value
-    name = get_global_context_value("namedata").get(id(dirichlet), "everywhere")
+    name = get_global_context_value("data").object_names.get(id(dirichlet), "everywhere")
 
     define_bctype_function(dirichlet, name)
     return name
@@ -725,7 +725,7 @@ def name_boundary_function(expr):
     if isinstance(expr, (VectorElement, TensorElement)):
         element, (_, boundary) = get_constraints_metadata(expr)
         from dune.perftool.generation import get_global_context_value
-        name = get_global_context_value("namedata").get(id(boundary), "zero")
+        name = get_global_context_value("data").object_names.get(id(boundary), "zero")
         define_boundary_function(boundary, name)
         return name
     if isinstance(expr, MixedElement):
@@ -738,7 +738,7 @@ def name_boundary_function(expr):
     element, (_, boundary) = get_constraints_metadata(expr)
 
     from dune.perftool.generation import get_global_context_value
-    name = get_global_context_value("namedata").get(id(boundary), "zero")
+    name = get_global_context_value("data").object_names.get(id(boundary), "zero")
 
     define_boundary_function(boundary, name)
     return name
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index 85fef5fa2781caaceb50f9dde0dd6c3b6bdf26bf..bf4f93e0ede645c726d630841c1b76f6f3b20696 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -272,7 +272,7 @@ def cgen_class_from_cache(tag, members=[]):
     return Class(basename, base_classes=base_classes, members=members + pm, constructors=[constructor], tparam_decls=tparams)
 
 
-def generate_localoperator_kernels(formdata, namedata):
+def generate_localoperator_kernels(formdata, data):
     # Extract the relevant attributes of the form data
     form = formdata.preprocessed_form