diff --git a/.gitignore b/.gitignore
index b93e9c6af37c30a0406bcb76090cd4e4cce58dc7..1a3dca2911edc332c3c76dcfd6b351c310a28ae6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,10 @@ src/gen/
 /case-study-sorting-pkg/out*/
 /case-study-sorting-pkg/.idea
 /case-study-sorting-pkg/.gradle/
+/case-study-sorting-pkg/build/
+/case-study-sorting-pkg/src/gen-res/
+/out*/
+/.idea
+/.gradle/
 *.class
 logs/
diff --git a/case-study-sorting-pkg/libs/pnml-relast-engine-fatjar-0.1.jar b/case-study-sorting-pkg/libs/pnml-relast-engine-fatjar-0.1.jar
index d497d256a7cb3dd0201559f447490b23cff21b7f..07e243a4637c1493f47348f370ca9ff37748184d 100644
Binary files a/case-study-sorting-pkg/libs/pnml-relast-engine-fatjar-0.1.jar and b/case-study-sorting-pkg/libs/pnml-relast-engine-fatjar-0.1.jar differ
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/Main.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/Main.java
index 115993ec2d940b587e9e8c8b69af4f8eaa9c0222..f25ada35978894e76e896cefa42038b8667e22a8 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/Main.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/Main.java
@@ -1,26 +1,16 @@
 package de.tudresden.inf.st.sorting;
 
-import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
-import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
 import de.tudresden.inf.st.sorting.fake.FakeServerNode;
-import de.tudresden.inf.st.sorting.handlers.ControlEndHandler;
-import de.tudresden.inf.st.sorting.handlers.ControlGetHandler;
-import de.tudresden.inf.st.sorting.handlers.ShowResultHandler;
-import de.tudresden.inf.st.sorting.handlers.SortColorHandler;
-import de.tudresden.inf.st.sorting.nodes.*;
 import org.ros.node.DefaultNodeMainExecutor;
 import org.ros.node.NodeConfiguration;
 import org.ros.node.NodeMainExecutor;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.net.URI;
 
 public class Main {
 
     private static final String ROS_HOST = "localhost";
     private static final String ROS_MASTER_URI = "http://localhost:11311";
-    private static final String MQTT_HOST = "localhost";
 
     private static final NodeConfiguration nodeConfiguration = NodeConfiguration.newPublic(ROS_HOST);
     private static final NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault();
@@ -29,47 +19,7 @@ public class Main {
 
         nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
 
-        // LOAD THE LOCAL NETS
-
-        List<String> petriNetPaths = new ArrayList<>();
-        petriNetPaths.add("src/main/resources/nets/SelectorNode.pnml");
-        petriNetPaths.add("src/main/resources/nets/LeftControllerNode.pnml");
-        petriNetPaths.add("src/main/resources/nets/RightControllerNode.pnml");
-        petriNetPaths.add("src/main/resources/nets/SynchronizerNode.pnml");
-        petriNetPaths.add("src/main/resources/nets/FeedbackNode.pnml");
-
-        List<PetriNet> petriNets = new ArrayList<>();
-
-        for(String petriNetPath : petriNetPaths){
-            petriNets.add(PnmlParser.parsePnml(petriNetPath, false).get(0));
-        }
-
-        // NODE CONFIGURATION
-
-     //   SelectorNode selectorNode = new SelectorNode("SelectorNode", petriNets.get(0), MQTT_HOST);
-     //   selectorNode.registerHandler("SortGreen", new SortColorHandler(1));
-     //   selectorNode.registerHandler("SortRed", new SortColorHandler(1));
-     //   selectorNode.registerHandler("SortBlue", new SortColorHandler(1));
-
-     //   LeftControllerNode leftControllerNode = new LeftControllerNode("LeftControllerNode", petriNets.get(1), MQTT_HOST);
-     //   RightControllerNode rightControllerNode = new RightControllerNode("RightControllerNode", petriNets.get(2), MQTT_HOST);
-        SynchronizerNode synchronizerNode = new SynchronizerNode("SynchronizerNode", petriNets.get(3), MQTT_HOST);
-        synchronizerNode.registerHandler("Get", new ControlGetHandler(1));
-        synchronizerNode.registerHandler("End", new ControlEndHandler(1));
-
-     //   FeedbackNode feedbackNode = new FeedbackNode("FeedbackNode", petriNets.get(4), MQTT_HOST);
-     //   feedbackNode.registerHandler("ShowFeedback", new ShowResultHandler(1));
-
-        // START THE NODES
-
-      //  new Thread(() -> nodeMainExecutor.execute(selectorNode, nodeConfiguration)) {{start();}};
-      //  new Thread(() -> nodeMainExecutor.execute(leftControllerNode, nodeConfiguration)) {{start();}};
-      //    new Thread(() -> nodeMainExecutor.execute(rightControllerNode, nodeConfiguration)) {{start();}};
-        new Thread(() -> nodeMainExecutor.execute(synchronizerNode, nodeConfiguration)) {{start();}};
-      //  new Thread(() -> nodeMainExecutor.execute(feedbackNode, nodeConfiguration)) {{start();}};
-
         // FAKE NODES FOR TESTING
-
         new Thread(() -> nodeMainExecutor.execute(new FakeServerNode("pickService", "PickServiceNode"), nodeConfiguration)) {{start();}};
         new Thread(() -> nodeMainExecutor.execute(new FakeServerNode("placeService", "PlaceServiceNode"), nodeConfiguration)) {{start();}};
 
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlEndHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlEndHandler.java
index 8c34668fbfa898cb8ef57bf7e2cb9abe8809060c..c9f912c745f5df8fe23a9ce185e0a0a358af2581 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlEndHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlEndHandler.java
@@ -19,6 +19,7 @@ public class ControlEndHandler extends TransitionHandler {
                 }
             }
         }
+
         return maps;
     };
 
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickAbortHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickAbortHandler.java
index 4bd3fa8008d4dc2f6d22113cd8798cc53f042ba7..9c78fe1e14d9d659505b7533eba12843f8a3cbbe 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickAbortHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickAbortHandler.java
@@ -3,6 +3,7 @@ package de.tudresden.inf.st.sorting.handlers;
 import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
 import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -15,7 +16,16 @@ public class PickAbortHandler extends TransitionHandler {
         for (Map<String, Object> m : maps) {
             m.replace(TokenConstants.PICK_SUCCESS, "abort");
         }
-        return maps;
+
+        List<Map<String, Object>> res = new ArrayList<>();
+
+        for(Map<String, Object> m : maps){
+            if(!m.get(TokenConstants.TRACE).toString().contains("safety")){
+                res.add(m);
+            }
+        }
+
+        return res;
     };
 
     public PickAbortHandler(int priority) {
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickHandler.java
index 3ce105da4486c98afdf2e09e8f46a48a14751e1c..a826857e554413d749b8d1cb838b25f6df5bc907 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickHandler.java
@@ -1,7 +1,9 @@
 package de.tudresden.inf.st.sorting.handlers;
 
 import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
+import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -18,7 +20,17 @@ public class PickHandler extends TransitionHandler {
             e.printStackTrace();
         }
 
-        return maps;
+        List<Map<String, Object>> res = new ArrayList<>();
+
+        for(Map<String, Object> m : maps){
+            if(!m.get(TokenConstants.TRACE).toString().contains("safety")){
+                String oldTrace = m.get(TokenConstants.TRACE).toString();
+                m.replace(TokenConstants.TRACE, oldTrace + "-pickToSafety");
+                res.add(m);
+            }
+        }
+
+        return res;
     };
 
     public PickHandler(int priority) {
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickSuccessHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickSuccessHandler.java
index 84a99255849fd9797eadefabbf5d6f139734af8e..3f246ecfebae374617e136c707c86b70e1672cd0 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickSuccessHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickSuccessHandler.java
@@ -15,6 +15,7 @@ public class PickSuccessHandler extends TransitionHandler {
         for (Map<String, Object> m : maps) {
             m.replace(TokenConstants.PICK_SUCCESS, "success");
         }
+
         return maps;
     };
 
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceAbortHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceAbortHandler.java
index 8ecb6cba739bf74755b6ed73e46eab87103ebb76..fbec6caf24d9f7310cb99ba453d714f534896d39 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceAbortHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceAbortHandler.java
@@ -3,6 +3,7 @@ package de.tudresden.inf.st.sorting.handlers;
 import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
 import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -10,12 +11,21 @@ import java.util.function.Function;
 public class PlaceAbortHandler extends TransitionHandler {
 
     final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PLACE_ABORT_HANDLING_FUNCTION = maps -> {
-        System.out.println("Executing PICK_ABORT_HANDLING_FUNCTION.");
+        System.out.println("Executing PLACE_ABORT_HANDLING_FUNCTION.");
 
         for (Map<String, Object> m : maps) {
             m.replace(TokenConstants.PLACE_SUCCESS, "abort");
         }
-        return maps;
+
+        List<Map<String, Object>> res = new ArrayList<>();
+
+        for(Map<String, Object> m : maps){
+            if(!m.get(TokenConstants.TRACE).toString().contains("safety")){
+                res.add(m);
+            }
+        }
+
+        return res;
     };
 
     public PlaceAbortHandler(int priority) {
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceHandler.java
index fb4d629cf06cf2f1068bd6987b9d6f898bb3cf4f..9ffb63c34deaa4b52fac3c4c87f0589b9521147f 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceHandler.java
@@ -1,7 +1,9 @@
 package de.tudresden.inf.st.sorting.handlers;
 
 import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
+import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -18,7 +20,18 @@ public class PlaceHandler extends TransitionHandler {
             e.printStackTrace();
         }
 
-        return maps;
+        List<Map<String, Object>> res = new ArrayList<>();
+
+        for(Map<String, Object> m : maps){
+            if(!m.get(TokenConstants.TRACE).toString().contains("safety")
+                && (!m.get(TokenConstants.TRACE).toString().contains("pickToSafety")
+                    || !m.get(TokenConstants.PICK_SUCCESS).toString().equals("false"))){
+                res.add(m);
+                return res;
+            }
+        }
+
+        return res;
     };
 
     public PlaceHandler(int priority) {
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceSuccessHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceSuccessHandler.java
index 6c1bdd660e4cd5d6e1c09c1f2b64db37f8d60af3..91cb0d418267e6945e9024f9606f0bb73c4ca8ea 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceSuccessHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceSuccessHandler.java
@@ -14,8 +14,8 @@ public class PlaceSuccessHandler extends TransitionHandler {
 
         for (Map<String, Object> m : maps) {
             m.replace(TokenConstants.PLACE_SUCCESS, "success");
-
         }
+
         return maps;
     };
 
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SafetyUsageHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SafetyUsageHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..61889e2b7c3841d942cd9fadedff6cc2bf4567a6
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SafetyUsageHandler.java
@@ -0,0 +1,27 @@
+package de.tudresden.inf.st.sorting.handlers;
+
+import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
+import de.tudresden.inf.st.sorting.constants.TokenConstants;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+public class SafetyUsageHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> SM_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing SM_HANDLING_FUNCTION.");
+
+        for (Map<String, Object> m : maps) {
+            String oldT = m.get(TokenConstants.TRACE).toString();
+            String newT = oldT + "-safety";
+            m.replace(TokenConstants.TRACE, newT);
+        }
+
+        return maps;
+    };
+
+    public SafetyUsageHandler(int priority) {
+        super(priority, SM_HANDLING_FUNCTION);
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataProcessingHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataProcessingHandler.java
index f640562d8ec6f16525715fdfdf41e1aa356a4662..137f0e566fab3d318389426e842a751b256fa8f7 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataProcessingHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataProcessingHandler.java
@@ -4,12 +4,12 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
 import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
 import java.io.IOException;
 import java.lang.reflect.Type;
 import java.nio.file.Files;
-import java.nio.file.Path;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -20,7 +20,8 @@ public class SensorDataProcessingHandler extends TransitionHandler {
         System.out.println("Executing GET_DATA_HANDLING_FUNCTION.");
 
         try {
-            Map<String, Object> fakeRes = parse(Files.readString(Path.of("/doc/FakeConfig.json")));
+            Map<String, Object> fakeRes = parse(
+                    Files.readString(PnmlParser.toTempPath("/docs/FakeConfig.json")));
 
             for(Map<String, Object> m : maps){
                 m.replace(TokenConstants.HUMAN_DETECTED, fakeRes.get("sensor"));
@@ -41,4 +42,4 @@ public class SensorDataProcessingHandler extends TransitionHandler {
         Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
         return gson.fromJson(s, mapType);
     }
-}
+}
\ No newline at end of file
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/ExecutorLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/ExecutorLauncher.java
index 4afc1647ff936bf39ce9f562173d6581a84c1d97..5ac7a2aa89885e6bd91f141acc43c1aec6addd58 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/ExecutorLauncher.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/ExecutorLauncher.java
@@ -28,6 +28,12 @@ public class ExecutorLauncher extends NodeLauncher {
         executorNode.registerHandler("PlacingFail", new PlaceFailHandler(1));
         executorNode.registerHandler("PlacingAbort", new PlaceAbortHandler(1));
 
+        executorNode.registerHandler("TransitionSafe", new SafetyUsageHandler(1));
+        executorNode.registerHandler("SafeToSensorCall", new SafetyUsageHandler(1));
+        executorNode.registerHandler("SafeToUnsafe", new SafetyUsageHandler(1));
+        executorNode.registerHandler("UnsafeToSensorCall", new SafetyUsageHandler(1));
+        executorNode.registerHandler("TransitionUnsafe", new SafetyUsageHandler(1));
+
         new Thread(() -> nodeMainExecutor.execute(executorNode, nodeConfiguration)) {{start();}};
     }
 }
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SensorLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SensorLauncher.java
index 5ba5e63f4fe17918ec9dc4418e957caf61bb98ab..08f0d50ba41f54d5bb4a38e29ffccf680ed076d6 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SensorLauncher.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SensorLauncher.java
@@ -14,7 +14,7 @@ public class SensorLauncher extends NodeLauncher {
 
         nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
 
-        String petriNetPath = "/nets/SelectorNode.pnml";
+        String petriNetPath = "/nets/SensorNode.pnml";
         PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
 
         SensorNode sensorNode = new SensorNode("SensorNode", petriNet, MQTT_HOST);
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/ExecutorNode.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/ExecutorNode.java
index 9a99c2a10e41e4ae7164e66dc34475f5dbac53a6..ece0d05821b0c8552cbf032112cbd55ecc85a82e 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/ExecutorNode.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/ExecutorNode.java
@@ -4,22 +4,48 @@ import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
 import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class ExecutorNode extends DiNeRosNode {
 
+    private static final int SENSOR_INTERVAL = 20000;
+    private long lastSensingTime = 0;
 
     public ExecutorNode(String nodeName, PetriNet petriNet, String rcHost) {
         super(nodeName, petriNet, rcHost, "mqtt");
     }
 
+    public boolean hasIntervalPassed() {
+        long elapsedTime = System.currentTimeMillis() - lastSensingTime;
+        return elapsedTime >= SENSOR_INTERVAL;
+    }
+
     @Override
     protected TransitionSelectionResult onChange(List<Transition> list) {
 
+        /*StringBuilder tList = new StringBuilder();
+
+        for(Transition t : list) {
+            tList.append(" - ");
+            tList.append(t.getId());
+        }
+
+        System.out.println("ENABLED: " + tList);*/
+
         for (Transition t : list) {
+            if (t.getId().equals("UnsafeToSensorCall") || t.getId().equals("SafeToSensorCall")){
+                if(lastSensingTime == 0 || hasIntervalPassed()){
+                    lastSensingTime = System.currentTimeMillis();
+                    System.out.println("Firing: " + t.getId() + " (interval)");
+                    return new FiringSelectionSuccess(t);
+                }
+            }
+
             if (t.getId().equals("TransitionUnsafe")) {
                 for (Place p : t.incomingPlaces()) {
                     if (p.getId().equals("SensorResponse")) {
+                        System.out.println(marking.resolveBalloonPlace(p).getBalloonMarking(0).getValue());
                         if (parseToken(marking.resolveBalloonPlace(p).getBalloonMarking(0).
                                 getValue()).get(TokenConstants.HUMAN_DETECTED).equals("true")) {
                             System.out.println("Firing: " + t.getId());
@@ -43,7 +69,24 @@ public class ExecutorNode extends DiNeRosNode {
                 }
             }
         }
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
+
+        List<Transition> filteredList = new ArrayList<>();
+
+        for(Transition t : list){
+            if (!t.getId().equals("UnsafeToSensorCall") && !t.getId().equals("SafeToSensorCall")){
+                filteredList.add(t);
+            }
+        }
+
+        /*for(RefPlace rp : this.petriNet.allRefPlaces()){
+            if(rp.getId().contains("PickUnsafeRef")){
+                for(Arc a : rp.getOutArcs()){
+                    System.out.println(a.getId() + " from " + a.getSource().getId() + " to " + a.getTarget().getId());
+                }
+            }
+        }*/
+
+        TransitionSelectionResult res = fireRandomEnabledTransition(filteredList);
 
         if(res.isFiringSelectionSuccess()){
             System.out.println("Firing: " + res.asFiringSelectionSuccess().getTransition().getId());
diff --git a/case-study-sorting-pkg/doc/FakeConfig.json b/case-study-sorting-pkg/src/main/resources/docs/FakeConfig.json
similarity index 100%
rename from case-study-sorting-pkg/doc/FakeConfig.json
rename to case-study-sorting-pkg/src/main/resources/docs/FakeConfig.json
diff --git a/case-study-sorting-pkg/doc/TokenFormat.json b/case-study-sorting-pkg/src/main/resources/docs/TokenFormat.json
similarity index 100%
rename from case-study-sorting-pkg/doc/TokenFormat.json
rename to case-study-sorting-pkg/src/main/resources/docs/TokenFormat.json
diff --git a/case-study-sorting-pkg/src/main/resources/nets/ExecutorNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/ExecutorNode.pnml
index 1091e4cef8b3e1bd741ec1b7dbcfa0c3a102ab07..b264828c2630d114c0b83658b8402ce406deb4ac 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/ExecutorNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/ExecutorNode.pnml
@@ -150,6 +150,10 @@
                     </arc>
                     <arc id="a22" source="PickingFail" target="PickOutput">
                     </arc>
+                    <arc id="a24n1" source="PickingAbort" target="PickUnsafeRef">
+                    </arc>
+                    <arc id="a24n2" source="PickUnsafeRef" target="PickingAbort">
+                    </arc>
                 </page>
                 <page id="PlaceService">
                     <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
@@ -294,6 +298,10 @@
                     </arc>
                     <arc id="a27" source="PlaceSafeRef" target="Place">
                     </arc>
+                    <arc id="a34n1" source="PlacingAbort" target="PlaceUnsafeRef">
+                    </arc>
+                    <arc id="a34n2" source="PlaceUnsafeRef" target="PlacingAbort">
+                    </arc>
                 </page>
                 <page id="SafetyModel">
                     <place id="Unsafe">
@@ -307,8 +315,8 @@
                             <subnet>SafetyModel</subnet>
                             <balloonMarking>
                                 <tokens>
-                                    <token>{ "id" : "NONE", "picksuccess" : "false", "placesuccess" : "false", "sensor"
-                                        : "NONE" }
+                                    <token>{ "color":"NONE","name":"NONE","pickSuccess":"false","placeSuccess":"false",
+                                        "humanDetected":"false","sensorData":"NONE","trace":"-safety", "locked" : "true" }
                                     </token>
                                 </tokens>
                             </balloonMarking>
diff --git a/case-study-sorting-pkg/src/main/resources/nets/SynchronizerNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/SynchronizerNode.pnml
index c96d49cdec29d6dda51db8bd8c023a68f3b6a891..ef8029c1d73fc9137d4c49c362cb6d3c93e8c673 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/SynchronizerNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/SynchronizerNode.pnml
@@ -145,8 +145,6 @@
                             <text>GetShared</text>
                         </name>
                         <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
-
-
                             <node>Synchronizer</node>
                             <subnet>SharedSync</subnet>
                             <balloonMarking>
diff --git a/models/grpn/sorting-wf-synced-safe-sensor-grpn-sig.pnml b/models/grpn/sorting-wf-synced-safe-sensor-grpn-sig.pnml
index 7f2b6cd0c6a410071806effbbab7ff190b6bb64d..702e01bc803b0fee78314b983f34a8e685f375c3 100644
--- a/models/grpn/sorting-wf-synced-safe-sensor-grpn-sig.pnml
+++ b/models/grpn/sorting-wf-synced-safe-sensor-grpn-sig.pnml
@@ -8,7 +8,7 @@
             <inputsignals>
                 <inputsignal>
                     <inputsignalID>Red</inputsignalID>
-                    <initialvalue>true</initialvalue>
+                    <initialvalue>false</initialvalue>
                 </inputsignal>
                 <inputsignal>
                     <inputsignalID>Blue</inputsignalID>
@@ -55,7 +55,8 @@
                         <subnet>selectorRed</subnet>
                         <balloonMarking>
                             <tokens>
-                                <token> { "id" : "red1", "picksuccess" : "false", "placesuccess" : "false", "sensor" : "NONE" } </token>
+                                <token>{"color" : "green", "name" : "green1", "pickSuccess" : "false", "placeSuccess" : "false",
+                                        "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -72,7 +73,8 @@
                         <subnet>selectorBlue</subnet>
                         <balloonMarking>
                             <tokens>
-                                <token> { "id" : "blue1", "picksuccess" : "false", "placesuccess" : "false", "sensor" : "NONE" } </token>
+                                <token>{"color" : "blue", "name" : "blue1", "pickSuccess" : "false", "placeSuccess" : "false",
+                                    "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -89,7 +91,8 @@
                         <subnet>selectorGreen</subnet>
                         <balloonMarking>
                             <tokens>
-                                <token> { "id" : "green1", "picksuccess" : "false", "placesuccess" : "false", "sensor" : "NONE" } </token>
+                                <token>{"color" : "red", "name" : "red1", "pickSuccess" : "false", "placeSuccess" : "false",
+                                    "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -508,9 +511,11 @@
                             <node>Synchronizer</node>
                             <subnet>SharedSync</subnet>
                             <balloonMarking>
-                                <tokens>
-                                    <token> { "id" : "NONE", "picksuccess" : "false", "placesuccess" : "false", "sensor" : "NONE" } </token>
-                                </tokens>
+                            	<tokens>
+                                <token>{ "color":"NONE","name":"NONE","pickSuccess":"false","placeSuccess":"false",
+                                        "humanDetected":"false","sensorData":"NONE","trace":"NONE", "locked" : "true" }
+                                    </token>
+                              </tokens>
                             </balloonMarking>
                         </toolspecific>
                         <initialMarking>
@@ -743,6 +748,10 @@
                     </arc>
                     <arc id="a24" source="PickingAbort" target="PickOutput">
                     </arc>
+                    <arc id="a24n1" source="PickingAbort" target="PickUnsafeRef">
+                    </arc>
+                    <arc id="a24n2" source="PickUnsafeRef" target="PickingAbort">
+                    </arc>
                 </page>
                 
                 <page id="PlaceService">
@@ -861,6 +870,10 @@
                     </arc>
                     <arc id="a34" source="PlacingAbort" target="PlaceOutput">
                     </arc>
+                    <arc id="a34n1" source="PlacingAbort" target="PlaceUnsafeRef">
+                    </arc>
+                    <arc id="a34n2" source="PlaceUnsafeRef" target="PlacingAbort">
+                    </arc>
                 </page>
                 
                 <page id="SafetyModel">
@@ -870,7 +883,9 @@
                             <subnet>SafetyModel</subnet>
                             <balloonMarking>
                                 <tokens>
-                                    <token> { "id" : "NONE", "picksuccess" : "false", "placesuccess" : "false", "sensor" : "NONE" } </token>
+                                    <token>{ "color":"NONE","name":"NONE","pickSuccess":"false","placeSuccess":"false",
+                                        "humanDetected":"false","sensorData":"NONE","trace":"-safety", "locked" : "true" }
+                                    </token>
                                 </tokens>
                             </balloonMarking>
                         </toolspecific>