diff --git a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/TreeNavigation.jrag b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/TreeNavigation.jrag
index 461e1e8c7511aa5663cd45d4cdac35d133ea0b18..70f2ee27c1115b158d70cd137825b5eb1f4ce7f0 100644
--- a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/TreeNavigation.jrag
+++ b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/TreeNavigation.jrag
@@ -1,18 +1,5 @@
 aspect TreeNavigation {
 
-  // collections of things
-
-  syn Collection<Segment> RailwayContainer.segments() {
-    java.util.List<Segment> segments = new ArrayList<>();
-    for (Region region : getRegionList()) {
-      for (TrackElement trackElement : region.getTrackElementList()) {
-        Segment segment = trackElement.asSegment();
-        if (segment != null) segments.add(segment);
-      }
-    }
-    return segments;
-  }
-
   syn Collection<Switch> RailwayContainer.switches() {
     java.util.List<Switch> switches = new ArrayList<>();
     for (Region region : getRegionList()) {
@@ -33,36 +20,6 @@ aspect TreeNavigation {
     return switches;
   }
 
-  syn Collection<Semaphore> RailwayContainer.semaphores() {
-    java.util.List<Semaphore> semaphores = new ArrayList<>();
-    for (Segment segment : segments()) {
-      for (Semaphore semaphore : segment.getSemaphoreList()) {
-        semaphores.add(semaphore);
-      }
-    }
-    return semaphores;
-  }
-
-  syn Collection<Sensor> RailwayContainer.sensors() {
-    java.util.List<Sensor> sensors = new ArrayList<>();
-    for (Region region : getRegionList()) {
-      for (Sensor sensor : region.getSensorList()){
-        sensors.add(sensor);
-      }
-    }
-    return sensors;
-  }
-
-  // more reference resolving
-
-  syn Collection<TrackElement> Sensor.monitoredElements() {
-    java.util.List<TrackElement> trackElements = new ArrayList<>();
-    for (TrackElement trackElement : getMonitoredElementList()) {
-      trackElements.add(trackElement);
-    }
-    return trackElements;
-  }
-
   syn Collection<Segment> Sensor.monitoredSegments() {
     java.util.List<Segment> segments = new ArrayList<>();
     for (TrackElement trackElement : getMonitoredElementList()) {
@@ -85,22 +42,6 @@ aspect TreeNavigation {
     return switches;
   }
 
-  syn TrackElement Sensor.monitoredElement(int i) {
-    return getMonitoredElement(i);
-  }
-
-  syn Sensor Route.requiredSensor(int i) {
-    return getRequiredSensor(i);
-  }
-
-  syn Collection<TrackElement> TrackElement.connectsTos() {
-    java.util.List<TrackElement> trackElements = new ArrayList<>();
-    for (TrackElement trackElement : getConnectsToList()) {
-      trackElements.add(trackElement);
-    }
-    return trackElements;
-  }
-
   syn Collection<Segment> TrackElement.connectsToSegments() {
     java.util.List<Segment> segments = new ArrayList<>();
     for (TrackElement trackElement : getConnectsToList()) {
@@ -112,34 +53,4 @@ aspect TreeNavigation {
     return segments;
   }
 
-  syn Collection<Sensor> Route.requiredSensors() {
-    java.util.List<Sensor> sensors = new ArrayList<>();
-    for (Sensor sensor : getRequiredSensorList()) {
-      sensors.add(sensor);
-    }
-    return sensors;
-  }
-
-  syn Collection<Route> Sensor.requiringRoutes() {
-    return getRoot().requiringRoutesMap().get(this.id());
-  }
-
-  syn Map<Integer,Set<Route>> RailwayContainer.requiringRoutesMap() {
-    Map<Integer,Set<Route>> routeMap = new java.util.HashMap<Integer,Set<Route>>();
-
-    // fill the keys
-    for (Sensor sensor: sensors()) {
-      routeMap.put(sensor.id(), new java.util.HashSet());
-    }
-
-    // update the values
-    for (Route route : getRouteList()) {
-      for (Sensor sensor : route.getRequiredSensorList()) {
-        routeMap.get(sensor.getId()).add(route);
-      }
-    }
-
-    return routeMap;
-  }
-
 }
diff --git a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/RouteSensorMatch.jrag b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/RouteSensorMatch.jrag
index 912612c860fe382b31d00d71e0cd841e02f7fd7c..3b563ba506c94bee2b6336c32e4c5268c7289319 100644
--- a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/RouteSensorMatch.jrag
+++ b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/RouteSensorMatch.jrag
@@ -12,7 +12,7 @@ aspect Queries {
     java.util.List<JastaddRouteSensorMatch> matches = new java.util.ArrayList<>();
 
     // if the route follows a switch and this switch has is monitored by a sensor
-    Collection<Sensor> requiredSensors = requiredSensors();
+    RefList<Sensor> requiredSensors = getRequiredSensorList();
     for (SwitchPosition sp : getSwitchPositionList()) {
       Switch sw = sp.target();
       for (Sensor sensor : sw.getMonitoringSensorList()) {
@@ -41,7 +41,7 @@ aspect Queries {
 
   syn Collection<JastaddRouteSensorInjectMatch> Route.routeSensorInjectMatches() {
     java.util.List<JastaddRouteSensorInjectMatch> matches = new ArrayList<JastaddRouteSensorInjectMatch>();
-    for (Sensor sensor: requiredSensors()) {
+    for (Sensor sensor: getRequiredSensorList()) {
       matches.add(new JastaddRouteSensorInjectMatch(this, sensor));
     }
     return matches;
diff --git a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
index 3aaab915d1a58cd3f1dc3df63b65a47438233a74..72945537dfeedb9087c1459554d95b970774b100 100644
--- a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
+++ b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
@@ -16,11 +16,11 @@ aspect Queries {
     Semaphore exitSemaphore = this.exit();
 
     // get the sensors of the route
-    for (Sensor sensor1 : this.requiredSensors()) {
+    for (Sensor sensor1 : this.getRequiredSensorList()) {
       for (TrackElement te1 : sensor1.getMonitoredElementList()) {
-        for (TrackElement te2 : te1.connectsTos()) {
+        for (TrackElement te2 : te1.getConnectsToList()) {
           for (Sensor sensor2 : te2.getMonitoringSensorList()) {
-            for (Route route2 : sensor2.requiringRoutes()) {
+            for (Route route2 : sensor2.getRequiringRouteList()) {
               if (this != route2) {
                 if (route2.entry() == null || route2.entry() != exitSemaphore) {
                   matches.add(new JastaddSemaphoreNeighborMatch(exitSemaphore, this, route2, sensor1, sensor2, te1, te2));