diff --git a/src/calng/FrameSelectionArbiter.py b/src/calng/FrameSelectionArbiter.py
index 637582d773152956b14fc322e7059ee631bb7e8e..b34a660fd5872da9d4ccc9b06f1204ba56710a67 100644
--- a/src/calng/FrameSelectionArbiter.py
+++ b/src/calng/FrameSelectionArbiter.py
@@ -143,7 +143,10 @@ class BaseFrameSelectionArbiter(TrainMatcher.TrainMatcher):
             self, on_success={"state": "PASSIVE"}
         )
 
-        geom_utils.subscribe_to_geometry_bound(self, self.get("geometryDevice"))
+        self._geometry = None
+        geom_utils.subscribe_to_geometry_bound(
+            self, self.get("geometryDevice"), on_geometry=self._on_geometry
+        )
 
     def _guess_number_of_frames(self, sources):
         # TODO: robust frame deduction
@@ -256,6 +259,9 @@ class SimpleFrameSelectionArbiter(BaseFrameSelectionArbiter):
         self.info["trainId"] = train_id
         self.rate_out.update()
 
+    def _on_geometry(self, geometry):
+        self.kernel.on_new_geometry(geometry)
+
 
 @KARABO_CLASSINFO("AdvancedFrameSelectionArbiter", deviceVersion)
 class AdvancedFrameSelectionArbiter(BaseFrameSelectionArbiter):
@@ -509,3 +515,7 @@ class AdvancedFrameSelectionArbiter(BaseFrameSelectionArbiter):
                 kernel_prefix = f"frameSelection.selections.{name}"
                 if conf.has(kernel_prefix):
                     kernel.reconfigure(conf[kernel_prefix])
+
+    def _on_geometry(self, geometry):
+        for kernel in self._selection_kernels.values()
+            kernel.on_new_geometry(geometry)
diff --git a/src/calng/arbiter_kernels/base_kernel.py b/src/calng/arbiter_kernels/base_kernel.py
index 8ae88cab31ecff3ba8ad5a971645e72598946723..7ccd96bd57da73bce010fb7a9b63082a5b710e4d 100644
--- a/src/calng/arbiter_kernels/base_kernel.py
+++ b/src/calng/arbiter_kernels/base_kernel.py
@@ -13,10 +13,6 @@ class BaseArbiterKernel:
         self._name = name
         self.reconfigure(config)
 
-    @property
-    def geometry(self):
-        return self._device._geometry
-
     @staticmethod
     def extend_device_schema(schema, prefix):
         """Should add configurability to the arbiter (matcher) the kernel will be
@@ -38,6 +34,15 @@ class BaseArbiterKernel:
     def reconfigure(self, config):
         pass
 
+    @property
+    def geometry(self):
+        """Same as BaseCorrectionAddon.geometry"""
+        return self._device._geometry
+
+    def on_new_geometry(self, geometry):
+        """Same as BaseCorrectionAddon.on_new_geometry"""
+        pass
+
 
 class Assign(BaseArbiterKernel):
     def consider(self, tid, src, nframes, mask, out):