diff --git a/python/dune/perftool/generation/loopy.py b/python/dune/perftool/generation/loopy.py
index b618f0bc816a11bce3273c18a453d68788f51bde..be835b7a2dd33cc21355ef5a872197c0e442810e 100644
--- a/python/dune/perftool/generation/loopy.py
+++ b/python/dune/perftool/generation/loopy.py
@@ -212,5 +212,4 @@ def subst_rule(expr, rule):
 def set_subst_rule(name, expr, visitor):
     rule = lp.SubstitutionRule(name, (), visitor(expr))
     subst_rule._memoize_cache = {k: v for k, v in subst_rule._memoize_cache.items() if v is not None}
-    print [type(v) for v in subst_rule._memoize_cache.values()]
     return subst_rule(expr, rule)
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index ecd2f7875441c7af78e1e0e33078a623f6de3856..9cb31a248f39c3ce733bce3172a5ac50cea936ad 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -423,10 +423,12 @@ def visit_integrals(integrals):
 
             # Ensure CSE on detjac * quadrature weight
             domain = term.argument.argexpr.ufl_domain()
-            if term.argument.restriction:
-                set_subst_rule("integration_factor", uc.FacetJacobianDeterminant(domain)*uc.QuadratureWeight(domain), visitor)
+            if measure == "cell":
+                set_subst_rule("integration_factor_cell1", uc.QuadratureWeight(domain)*uc.Abs(uc.JacobianDeterminant(domain)), visitor)
+                set_subst_rule("integration_factor_cell2", uc.Abs(uc.JacobianDeterminant(domain))*uc.QuadratureWeight(domain), visitor)
             else:
-                set_subst_rule("integration_factor", uc.QuadratureWeight(domain)*uc.Abs(uc.JacobianDeterminant(domain)), visitor)
+                set_subst_rule("integration_factor_facet1", uc.FacetJacobianDeterminant(domain)*uc.QuadratureWeight(domain), visitor)
+                set_subst_rule("integration_factor_facet2", uc.QuadratureWeight(domain)*uc.FacetJacobianDeterminant(domain), visitor)
 
             get_backend(interface="accum_insn")(visitor, term, measure, subdomain_id)
 
@@ -495,8 +497,6 @@ def extract_kernel_from_cache(tag, wrap_in_cgen=True):
                          silenced_warnings=silenced,
                          name=name,
                          )
-    from loopy import make_reduction_inames_unique
-    #kernel = make_reduction_inames_unique(kernel)
 
     # Apply the transformations that were gathered during tree traversals
     for trafo in transformations:
@@ -504,8 +504,13 @@ def extract_kernel_from_cache(tag, wrap_in_cgen=True):
 
     # Precompute all the substrules
     for sr in substrules:
-        print sr.name
-        kernel = lp.precompute(kernel, sr.name)
+        try:
+            kernel = lp.precompute(kernel, sr.name)
+        except:
+            pass
+
+    from loopy import make_reduction_inames_unique
+    kernel = make_reduction_inames_unique(kernel)
 
     from dune.perftool.loopy import heuristic_duplication
     kernel = heuristic_duplication(kernel)