diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py
index ce080eba080be2cf75e5d4ee6993232dfb237079..9e98245c3410528780dcf31702dade76751086d2 100644
--- a/python/dune/perftool/pdelab/geometry.py
+++ b/python/dune/perftool/pdelab/geometry.py
@@ -407,13 +407,11 @@ def to_global(local):
     return prim.Variable(name)
 
 
+@preamble
 def define_cell_volume(name, restriction):
     geo = name_cell_geometry(restriction)
-    temporary_variable(name, shape=())
-    code = "{} = {}.volume();".format(name, geo)
-    return quadrature_preamble(code,
-                               assignees=frozenset({name}),
-                               )
+    valuearg(name, dtype=np.float64)
+    return "auto {} = {}.volume();".format(name, geo)
 
 
 def name_cell_volume(restriction):
@@ -422,13 +420,11 @@ def name_cell_volume(restriction):
     return name
 
 
+@preamble
 def define_facet_area(name):
     geo = name_intersection_geometry()
-    temporary_variable(name, shape=())
-    code = "{} = {}.volume();".format(name, geo)
-    return quadrature_preamble(code,
-                               assignees=frozenset({name}),
-                               )
+    valuearg(name, dtype=np.float64)
+    return "auto {} = {}.volume();".format(name, geo)
 
 
 def name_facet_area():