diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py
index b54ada4c402a70c1c34981df2dc79a8c717f6ad8..1c2a7098e7092e8cd36047658fd98d264c0fb033 100644
--- a/python/dune/perftool/sumfact/vectorization.py
+++ b/python/dune/perftool/sumfact/vectorization.py
@@ -21,6 +21,7 @@ from dune.perftool.error import PerftoolError
 from dune.perftool.options import get_option
 from dune.perftool.tools import add_to_frozendict,round_to_multiple
 
+from pytools import product
 from frozendict import frozendict
 import itertools as it
 import loopy as lp
@@ -69,9 +70,11 @@ def explicit_costfunction(sf):
     vertical = int(vertical)
 
     if sf.horizontal_width == horizontal and sf.vertical_width == vertical:
-        return 1
+        # Penalize position mapping
+        penalty = sum(abs(sf.kernels[i].position_priority - i) if sf.kernels[i].position_priority is not None else 0 for i in range(sf.length))
+        return 1 + penalty
     else:
-        return 2
+        return 1000000000000
 
 
 def strategy_cost(strategy):
@@ -79,7 +82,16 @@ def strategy_cost(strategy):
     set_quadrature_points(qp)
     func = get_backend(interface="vectorization_strategy",
                        selector=lambda: get_option("vectorization_strategy"))
-    return sum(float(func(sf)) for sf in strategy.values())
+    keys = set(sf.cache_key for sf in strategy.values())
+
+    # Sum over all the sum factorization kernels in the realization
+    score = 0.0
+    for sf in strategy.values():
+        if sf.cache_key in keys:
+            score = score + float(func(sf))
+            keys.discard(sf.cache_key)
+
+    return score
 
 
 def stringify_vectorization_strategy(strategy):
@@ -164,7 +176,7 @@ def vectorization_opportunity_generator(sumfacts, width):
     #
     quad_points = [quadrature_points_per_direction()]
 
-    if True or get_option("vectorization_allow_quadrature_changes"):
+    if get_option("vectorization_allow_quadrature_changes"):
         sf = next(iter(sumfacts))
         depth = 1
         while depth <= width: