diff --git a/src/calng/Gotthard2Assembler.py b/src/calng/Gotthard2Assembler.py
index 02cb59e520d0c7a6132e0f6939331c817fca73a8..121688563163637a7202bc83a50fdccf4cf859c1 100644
--- a/src/calng/Gotthard2Assembler.py
+++ b/src/calng/Gotthard2Assembler.py
@@ -37,6 +37,13 @@ class Gotthard2Assembler(TrainMatcher.TrainMatcher):
             .dataSchema(schemas.preview_schema(wrap_image_in_imagedata=False))
             .commit(),
 
+            STRING_ELEMENT(expected)
+            .key("managerDevice")
+            .displayedName("Manager device")
+            .assignmentInternal()
+            .defaultValue("")
+            .commit(),
+
             STRING_ELEMENT(expected)
             .key("geometryDevice")
             .displayedName("[Unused] Geometry device")
diff --git a/src/calng/frameselection_utils.py b/src/calng/frameselection_utils.py
index 9b444e56eed897d6781d3c24b5dcfad31baa4a22..edd9b612e052831ebfc12fc6be2e60c3ce3b6b9b 100644
--- a/src/calng/frameselection_utils.py
+++ b/src/calng/frameselection_utils.py
@@ -138,9 +138,9 @@ class FrameselectionFriend:
 
     def get_mask(self, sources):
         if self._enabled and self._arbiter in sources:
-            return np.array(
-                sources[self._arbiter][0]["data.dataFramePattern"], copy=False
-            ).astype(bool, copy=False)
+            return np.asarray(
+                sources[self._arbiter][0]["data.dataFramePattern"], dtype=bool
+            )
         else:
             return None
 
@@ -171,8 +171,7 @@ class FrameselectionFriend:
                 if not arbiter.has(mask_key):
                     # no mask
                     continue
-                mask = np.array(
-                    arbiter[mask_key], dtype=bool, copy=False)
+                mask = np.asarray(arbiter[mask_key], dtype=bool)
 
                 for source, data in correction_sources.items():
                     if not data.has(arg):