diff --git a/python/dune/perftool/cgen/clazz.py b/python/dune/perftool/cgen/clazz.py
index fa00c0a126d16b241278ec15f437b3f32f93049e..2586614a41e555e058a59e3a0c65bbb6410c67e6 100644
--- a/python/dune/perftool/cgen/clazz.py
+++ b/python/dune/perftool/cgen/clazz.py
@@ -36,9 +36,13 @@ class ClassMember(Generable):
         self.member = member
         self.access = access
 
+        if isinstance(member, str):
+            from cgen import Line
+            self.member = Line(member)
+
         # We only consider a Generable or a list thereof as member
         from collections import Iterable
-        assert isinstance(member, Generable) or (isinstance(member, Iterable) and all(isinstance(m, Generable) for m in member))
+        assert isinstance(self.member, Generable) or (isinstance(self.member, Iterable) and all(isinstance(m, Generable) for m in self.member))
 
     def generate(self):
         yield "\n\n"
diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py
index 6a73a9b25b6a307ca052caca1edc6ac757f446d0..4a0757cb28789d42f484ebe95436ffacb00e2ad5 100644
--- a/python/dune/perftool/generation/cpp.py
+++ b/python/dune/perftool/generation/cpp.py
@@ -40,7 +40,7 @@ def class_member(classtag=None, access=AccessModifier.PRIVATE):
     from cgen import Value
     from dune.perftool.cgen.clazz import ClassMember
 
-    return generator_factory(item_tags=(classtag, "member"), on_store=lambda t, n: ClassMember(Value(t, n), access=access), counted=True)
+    return generator_factory(item_tags=(classtag, "member"), on_store=lambda m: ClassMember(m, access=access), counted=True)
 
 
 def constructor_parameter(_type, name, classtag=None, constructortag=None):
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index e11f3e636e7e3951622a987f886fbb0417dc0078..294a7b0e3165e226c1c3180217522ff5aa495a58 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -2,7 +2,7 @@ from __future__ import absolute_import
 
 from dune.perftool.options import get_option
 from dune.perftool.generation import include_file, base_class, symbol, initializer_list, class_member, constructor_parameter
-from dune.perftool.cgen.clazz import BaseClass, ClassMember
+from dune.perftool.cgen.clazz import AccessModifier, BaseClass, ClassMember
 
 from pytools import memoize
 
@@ -19,7 +19,17 @@ def define_initree(name):
     constructor_parameter("const Dune::ParameterTree&", param_name, classtag="operator", constructortag="iniconstructor")
     initializer_list(name, [param_name], classtag="operator")
 
-    return ("const Dune::ParameterTree&", name)
+    return "const Dune::ParameterTree& {};".format(name)
+
+
+@class_member(classtag="operator", access=AccessModifier.PUBLIC)
+def enum_pattern(which):
+    return "enum {{ doPattern{} = true }};".format(which)
+
+
+@class_member(classtag="operator", access=AccessModifier.PUBLIC)
+def enum_alpha(which):
+    return "enum {{ doAlpha{} = true }};".format(which)
 
 
 @symbol
@@ -56,6 +66,8 @@ def measure_specific_details(measure):
     if measure == "cell":
         base_class('Dune::PDELab::FullVolumePattern', classtag="operator")
         numerical_jacobian("Volume")
+        enum_pattern("Volume")
+        enum_alpha("Volume")
 
         ret["residual_signature"] = ['template<typename EG, typename LFSU, typename X, typename LFSV, typename R>',
                                      'void alpha_volume(const EG& eg, const LFSU& lfsu, const X& x, const LFSV& lfsv, R& r) const']
@@ -65,6 +77,8 @@ def measure_specific_details(measure):
     if measure == "exterior_facet":
         base_class('Dune::PDELab::FullBoundaryPattern', classtag="operator")
         numerical_jacobian("Boundary")
+        enum_pattern("Boundary")
+        enum_alpha("Boundary")
 
         ret["residual_signature"] = ['template<typename IG, typename LFSV0, typename X, typename LFSV1, typename R>',
                                      'void alpha_boundary(const IG& ig, const LFSV0& lfsv0, const X& x, const LFSV1& lfsv1, R& r) const']
@@ -74,6 +88,8 @@ def measure_specific_details(measure):
     if measure == "interior_facet":
         base_class('Dune::PDELab::FullSkeletonPattern', classtag="operator")
         numerical_jacobian("Skeleton")
+        enum_pattern("Skeleton")
+        enum_alpha("Skeleton")
 
         ret["residual_signature"] = ['template<typename IG, typename LFSV0_S, typename X, typename LFSV1_S, typename LFSV0_N, typename R, typename LFSV1_N>',
                                      'void alpha_skeleton(const IG& ig, const LFSV0_S& lfsv0_s, const X& x_s, const LFSV1_S& lfsv1_s, const LFSV0_N& lfsv0_n, const X& x_n, const LFSV1_N& lfsv1_n, R& r_s, R& r_n) const']