diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f786a780e0a53e6c7697575f8de8b8b62d22fb10
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+/case-study-sorting-pkg/build/
+/case-study-sorting-pkg/src/gen-res/
+src/gen/
+/case-study-sorting-pkg/out*/
+.idea
+/case-study-sorting-pkg/.gradle/
+*.class
+logs/
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.bin b/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.bin
index 6c68a31903af34d4122f861bb84205f75ddb26f9..390b8a0e5f3e7509cd65c507336d58dac3a72aa9 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.bin and b/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.bin differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.lock b/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.lock
index 0e50a6caf88483cc3a8ed556dfe02098a3dcc0da..80e8786dd967028508f715933b5256cd38c779d1 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.lock and b/case-study-sorting-pkg/.gradle/6.7.1/executionHistory/executionHistory.lock differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.bin b/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.bin
index 9f7c15f05c10bbae9bbaf07ca1ad589e721a2968..ad34a328489caf615748ebd36d062134cdaf3f41 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.bin and b/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.bin differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.lock b/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.lock
index e0b1e919b0e8a240f0f848b71050600e309bafaf..987f6d489a65f76f1cfac879146842e17a08f7b2 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.lock and b/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/fileHashes.lock differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/resourceHashesCache.bin b/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/resourceHashesCache.bin
index c97552f46457469dfa03ee49019f578746d2cd32..73ba150b6a6520143cf266af2eba463e16966d74 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/resourceHashesCache.bin and b/case-study-sorting-pkg/.gradle/6.7.1/fileHashes/resourceHashesCache.bin differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/classAnalysis.bin b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/classAnalysis.bin
index 74a3088d24a1983646afc768c324f0b66a0a7c0d..150d543175545e218cd741811904209295e0d8cd 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/classAnalysis.bin and b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/classAnalysis.bin differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/jarAnalysis.bin b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/jarAnalysis.bin
index 345c653b0859a17e788c38f52a2b0d425458a549..1f1526e8dd839303b5a001eef8da7e1eed0ad9f5 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/jarAnalysis.bin and b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/jarAnalysis.bin differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/javaCompile.lock b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/javaCompile.lock
index 8cb3c09e5c26152354dd4f584172eef1d2ffcd0c..069954e59b6ad869a9c683d15b0097c3ed5c6b14 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/javaCompile.lock and b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/javaCompile.lock differ
diff --git a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/taskHistory.bin b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/taskHistory.bin
index e4aacb94de70693352c48d9ce88ac9c4570d8e8d..4bb603d448dee260c37b8123ee8731bfcea4f16d 100644
Binary files a/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/taskHistory.bin and b/case-study-sorting-pkg/.gradle/6.7.1/javaCompile/taskHistory.bin differ
diff --git a/case-study-sorting-pkg/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/case-study-sorting-pkg/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 00b0e0b5037e67e2669295154027d9bcbd45796c..708da361a31aabb4e44d5d5991d7c1fd1a824272 100644
Binary files a/case-study-sorting-pkg/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/case-study-sorting-pkg/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/case-study-sorting-pkg/.gradle/buildOutputCleanup/outputFiles.bin b/case-study-sorting-pkg/.gradle/buildOutputCleanup/outputFiles.bin
index e92d9b3d88b174b197dfe1e4db8f496e3d79db92..89999f7495136e58c776816121bbf9f0b9f0d297 100644
Binary files a/case-study-sorting-pkg/.gradle/buildOutputCleanup/outputFiles.bin and b/case-study-sorting-pkg/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/case-study-sorting-pkg/.idea/uiDesigner.xml b/case-study-sorting-pkg/.idea/uiDesigner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e96534fb27b68192f27f985d3879e173ec77adb8
--- /dev/null
+++ b/case-study-sorting-pkg/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/case-study-sorting-pkg/build.gradle b/case-study-sorting-pkg/build.gradle
index fd1f2a562ac433a945431d7d37864ed87393856c..6e0ea157e9fb6134be7f1cc588fd43254830f9e8 100644
--- a/case-study-sorting-pkg/build.gradle
+++ b/case-study-sorting-pkg/build.gradle
@@ -63,3 +63,142 @@ run {
     mainClassName = 'de.tudresden.inf.st.sorting.Main'
     standardInput = System.in
 }
+
+
+task jarSelectorNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.SelectorLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-selector'
+}
+
+task jarLeftControllerNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.LeftControllerLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-leftController'
+}
+
+task jarRightControllerNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.RightControllerLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-rightController'
+}
+
+task jarSynchronizerNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.SynchronizerLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-synchronizer'
+}
+
+task jarFeedbackNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.FeedbackLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-feedback'
+}
+
+task jarExecutorNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.ExecutorLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-executor'
+}
+
+task jarSensorNode(type: Jar) {
+    group = "nodes"
+    destinationDirectory.set(file("./nodes"))
+
+    manifest {
+        attributes "Main-Class": "de.tudresden.inf.st.sorting.launcher.SensorLauncher"
+    }
+
+    from sourceSets.main.output
+    from {
+        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+
+    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    archiveBaseName = 'case-study-sorting-pkg-sensor'
+}
+
+task jarAllNodes(type: Jar){
+    group = "nodes"
+}
+
+jarAllNodes.dependsOn jarSelectorNode
+jarAllNodes.dependsOn jarLeftControllerNode
+jarAllNodes.dependsOn jarRightControllerNode
+jarAllNodes.dependsOn jarSynchronizerNode
+jarAllNodes.dependsOn jarFeedbackNode
+jarAllNodes.dependsOn jarExecutorNode
+jarAllNodes.dependsOn jarSensorNode
diff --git a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main$1.class b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main$1.class
index 4d2ba2a863d6dc58caf107a144a7004a23230330..bd313b3fc15880977903f91a5c4c5480046b154b 100644
Binary files a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main$1.class and b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main$1.class differ
diff --git a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main.class b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main.class
index 60f11e51618dfd0c5d40cf1903930392a3b07352..8702394e9ba97257de86dc6dcf2659724144b158 100644
Binary files a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main.class and b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/Main.class differ
diff --git a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/constants/TokenConstants.class b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/constants/TokenConstants.class
index 73e5db4279ab1fe44d169524d43149da7bceddcb..8f56e4c5e270207b77e1d8314689e105931a488c 100644
Binary files a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/constants/TokenConstants.class and b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/constants/TokenConstants.class differ
diff --git a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/ShowResultHandler.class b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/ShowResultHandler.class
index d726cb038c1efc20b5ace58525c2b602da155121..1dcf8833acd343c0b3f0609a0b63bdddce0ae0ab 100644
Binary files a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/ShowResultHandler.class and b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/ShowResultHandler.class differ
diff --git a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/SortColorHandler.class b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/SortColorHandler.class
index aac9e0ea9ab92da91f90da09de8c13bbd5ebacd4..194614abc389927d3fdc339422a9629ef88eb317 100644
Binary files a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/SortColorHandler.class and b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/handlers/SortColorHandler.class differ
diff --git a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/nodes/SelectorNode.class b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/nodes/SelectorNode.class
index e6686bae0c77a30db71c648742f12c0e0819acfa..89c8e385b30a54b7e8b4ae9ac2a85df2eadddbce 100644
Binary files a/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/nodes/SelectorNode.class and b/case-study-sorting-pkg/build/classes/java/main/de/tudresden/inf/st/sorting/nodes/SelectorNode.class differ
diff --git a/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.tar b/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.tar
index ed84307f833e697dcf5bf0ecc47a4466ea841fc0..2a226846d424a76dc6e2b3a26e04c38fbc668dc4 100644
Binary files a/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.tar and b/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.tar differ
diff --git a/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.zip b/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.zip
index e3f73b75f364791df99f75ba8d1af18c4cfdd0c2..0ded1574fa67e8e3b63fc397733512898b81d5be 100644
Binary files a/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.zip and b/case-study-sorting-pkg/build/distributions/case-study-sorting-pkg-0.1.zip differ
diff --git a/case-study-sorting-pkg/build/libs/case-study-sorting-pkg-0.1.jar b/case-study-sorting-pkg/build/libs/case-study-sorting-pkg-0.1.jar
index 966b4a0238127e89f9cb5c5dd8bcc2c454cb0254..3937516f2c779207f3514dc373b114ab502d4d8e 100644
Binary files a/case-study-sorting-pkg/build/libs/case-study-sorting-pkg-0.1.jar and b/case-study-sorting-pkg/build/libs/case-study-sorting-pkg-0.1.jar differ
diff --git a/case-study-sorting-pkg/build/resources/main/nets/ExecutorNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/ExecutorNode.pnml
index 364917b9ddac70199d94a46657f6a63f768b214b..1091e4cef8b3e1bd741ec1b7dbcfa0c3a102ab07 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/ExecutorNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/ExecutorNode.pnml
@@ -202,7 +202,7 @@
                     </place>
                     <transition id="PlacingAbort">
                         <name>
-                            <text>PlaceingAbort</text>
+                            <text>PlacingAbort</text>
                         </name>
                         <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
 
@@ -453,14 +453,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/resources/main/nets/FeedbackNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/FeedbackNode.pnml
index 3375c9ba77e6529a2236a50f5512335f137e974d..c8a2ef66a0618fc207da115f0f56420e673ad084 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/FeedbackNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/FeedbackNode.pnml
@@ -60,14 +60,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/resources/main/nets/LeftControllerNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/LeftControllerNode.pnml
index ee9dbd9e4146b14065a9f52245c5255e03057d8d..4d6ce660b011e2f4bda759c55325e2709b562509 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/LeftControllerNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/LeftControllerNode.pnml
@@ -85,14 +85,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/resources/main/nets/RightControllerNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/RightControllerNode.pnml
index eb63ce0e322993895ddb7e27a046099ae1afb2d9..a14e84ad556196fbab9fb0aec3c425c7ee935e1c 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/RightControllerNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/RightControllerNode.pnml
@@ -85,14 +85,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/resources/main/nets/SelectorNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/SelectorNode.pnml
index eb274968060835711afe040b74f4a090dee3ab4c..c914a69407a531fba657afc87fba6788533f9cd6 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/SelectorNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/SelectorNode.pnml
@@ -19,7 +19,7 @@
                         <balloonMarking>
                             <tokens>
                                 <token>{"color" : "green", "name" : "green1", "pickSuccess" : "false", "placeSuccess" : "false",
-                                        "humanDetected" : "false", "sensorData" : "", "trace" : "" } </token>
+                                        "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -51,7 +51,7 @@
                         <balloonMarking>
                             <tokens>
                                 <token>{"color" : "blue", "name" : "blue1", "pickSuccess" : "false", "placeSuccess" : "false",
-                                    "humanDetected" : "false", "sensorData" : "", "trace" : "" } </token>
+                                    "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -71,7 +71,7 @@
                         <balloonMarking>
                             <tokens>
                                 <token>{"color" : "red", "name" : "red1", "pickSuccess" : "false", "placeSuccess" : "false",
-                                    "humanDetected" : "false", "sensorData" : "", "trace" : "" } </token>
+                                    "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -166,14 +166,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/resources/main/nets/SensorNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/SensorNode.pnml
index e410503238de1f8cd7a669019d55b0fe86be3d32..a292b80cac058616a138451dcbd5bd34f9c39ec3 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/SensorNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/SensorNode.pnml
@@ -99,14 +99,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/resources/main/nets/SynchronizerNode.pnml b/case-study-sorting-pkg/build/resources/main/nets/SynchronizerNode.pnml
index c42c77e412b8d209cf43273c3eab19a9852d3368..c96d49cdec29d6dda51db8bd8c023a68f3b6a891 100644
--- a/case-study-sorting-pkg/build/resources/main/nets/SynchronizerNode.pnml
+++ b/case-study-sorting-pkg/build/resources/main/nets/SynchronizerNode.pnml
@@ -151,8 +151,8 @@
                             <subnet>SharedSync</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":"NONE", "locked" : "true" }
                                     </token>
                                 </tokens>
                             </balloonMarking>
@@ -170,14 +170,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/build/tmp/compileJava/source-classes-mapping.txt b/case-study-sorting-pkg/build/tmp/compileJava/source-classes-mapping.txt
index 084a6d5499302e3cbccf848f03de856910ba3608..f3cae35b088b3f6b3ec582819918c7e7a0ee3d39 100644
--- a/case-study-sorting-pkg/build/tmp/compileJava/source-classes-mapping.txt
+++ b/case-study-sorting-pkg/build/tmp/compileJava/source-classes-mapping.txt
@@ -1,21 +1,77 @@
+de/tudresden/inf/st/sorting/launcher/NodeLauncher.java
+ de.tudresden.inf.st.sorting.launcher.NodeLauncher
 de/tudresden/inf/st/sorting/constants/TokenConstants.java
  de.tudresden.inf.st.sorting.constants.TokenConstants
+de/tudresden/inf/st/sorting/fake/FakeServerNode.java
+ de.tudresden.inf.st.sorting.fake.FakeServerNode
+de/tudresden/inf/st/sorting/handlers/ControlGetHandler.java
+ de.tudresden.inf.st.sorting.handlers.ControlGetHandler
+de/tudresden/inf/st/sorting/nodes/SensorNode.java
+ de.tudresden.inf.st.sorting.nodes.SensorNode
+de/tudresden/inf/st/sorting/nodes/LeftControllerNode.java
+ de.tudresden.inf.st.sorting.nodes.LeftControllerNode
+de/tudresden/inf/st/sorting/launcher/FeedbackLauncher.java
+ de.tudresden.inf.st.sorting.launcher.FeedbackLauncher
+ de.tudresden.inf.st.sorting.launcher.FeedbackLauncher$1
+de/tudresden/inf/st/sorting/handlers/PlaceSuccessHandler.java
+ de.tudresden.inf.st.sorting.handlers.PlaceSuccessHandler
+de/tudresden/inf/st/sorting/handlers/SortColorHandler.java
+ de.tudresden.inf.st.sorting.handlers.SortColorHandler
+de/tudresden/inf/st/sorting/handlers/PlaceAbortHandler.java
+ de.tudresden.inf.st.sorting.handlers.PlaceAbortHandler
 de/tudresden/inf/st/sorting/Main.java
  de.tudresden.inf.st.sorting.Main
  de.tudresden.inf.st.sorting.Main$1
+ de.tudresden.inf.st.sorting.Main$2
+ de.tudresden.inf.st.sorting.Main$3
 de/tudresden/inf/st/sorting/nodes/FeedbackNode.java
  de.tudresden.inf.st.sorting.nodes.FeedbackNode
-de/tudresden/inf/st/sorting/nodes/LeftControllerNode.java
- de.tudresden.inf.st.sorting.nodes.LeftControllerNode
+de/tudresden/inf/st/sorting/handlers/SensorDataProcessingHandler.java
+ de.tudresden.inf.st.sorting.handlers.SensorDataProcessingHandler
+ de.tudresden.inf.st.sorting.handlers.SensorDataProcessingHandler$1
+de/tudresden/inf/st/sorting/handlers/PlaceHandler.java
+ de.tudresden.inf.st.sorting.handlers.PlaceHandler
+de/tudresden/inf/st/sorting/launcher/LeftControllerLauncher.java
+ de.tudresden.inf.st.sorting.launcher.LeftControllerLauncher
+ de.tudresden.inf.st.sorting.launcher.LeftControllerLauncher$1
+de/tudresden/inf/st/sorting/utils/LogUtils.java
+ de.tudresden.inf.st.sorting.utils.LogUtils
+de/tudresden/inf/st/sorting/launcher/SynchronizerLauncher.java
+ de.tudresden.inf.st.sorting.launcher.SynchronizerLauncher
+ de.tudresden.inf.st.sorting.launcher.SynchronizerLauncher$1
+de/tudresden/inf/st/sorting/launcher/SensorLauncher.java
+ de.tudresden.inf.st.sorting.launcher.SensorLauncher
+ de.tudresden.inf.st.sorting.launcher.SensorLauncher$1
+de/tudresden/inf/st/sorting/launcher/RightControllerLauncher.java
+ de.tudresden.inf.st.sorting.launcher.RightControllerLauncher
+ de.tudresden.inf.st.sorting.launcher.RightControllerLauncher$1
+de/tudresden/inf/st/sorting/handlers/ControlEndHandler.java
+ de.tudresden.inf.st.sorting.handlers.ControlEndHandler
 de/tudresden/inf/st/sorting/handlers/ShowResultHandler.java
  de.tudresden.inf.st.sorting.handlers.ShowResultHandler
+de/tudresden/inf/st/sorting/launcher/SelectorLauncher.java
+ de.tudresden.inf.st.sorting.launcher.SelectorLauncher
+ de.tudresden.inf.st.sorting.launcher.SelectorLauncher$1
+de/tudresden/inf/st/sorting/nodes/ExecutorNode.java
+ de.tudresden.inf.st.sorting.nodes.ExecutorNode
+de/tudresden/inf/st/sorting/handlers/PickFailHandler.java
+ de.tudresden.inf.st.sorting.handlers.PickFailHandler
+de/tudresden/inf/st/sorting/handlers/PickHandler.java
+ de.tudresden.inf.st.sorting.handlers.PickHandler
+de/tudresden/inf/st/sorting/handlers/PickSuccessHandler.java
+ de.tudresden.inf.st.sorting.handlers.PickSuccessHandler
 de/tudresden/inf/st/sorting/nodes/RightControllerNode.java
  de.tudresden.inf.st.sorting.nodes.RightControllerNode
 de/tudresden/inf/st/sorting/nodes/SynchronizerNode.java
  de.tudresden.inf.st.sorting.nodes.SynchronizerNode
 de/tudresden/inf/st/sorting/nodes/SelectorNode.java
  de.tudresden.inf.st.sorting.nodes.SelectorNode
-de/tudresden/inf/st/sorting/utils/LogUtils.java
- de.tudresden.inf.st.sorting.utils.LogUtils
-de/tudresden/inf/st/sorting/handlers/SortColorHandler.java
- de.tudresden.inf.st.sorting.handlers.SortColorHandler
+de/tudresden/inf/st/sorting/handlers/PickAbortHandler.java
+ de.tudresden.inf.st.sorting.handlers.PickAbortHandler
+de/tudresden/inf/st/sorting/handlers/PlaceFailHandler.java
+ de.tudresden.inf.st.sorting.handlers.PlaceFailHandler
+de/tudresden/inf/st/sorting/launcher/ExecutorLauncher.java
+ de.tudresden.inf.st.sorting.launcher.ExecutorLauncher
+ de.tudresden.inf.st.sorting.launcher.ExecutorLauncher$1
+de/tudresden/inf/st/sorting/handlers/SensorDataGetHandler.java
+ de.tudresden.inf.st.sorting.handlers.SensorDataGetHandler
diff --git a/case-study-sorting-pkg/doc/FakeConfig.json b/case-study-sorting-pkg/doc/FakeConfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..377a35b130cba76d9d7a47401c1eb919967d9cc6
--- /dev/null
+++ b/case-study-sorting-pkg/doc/FakeConfig.json
@@ -0,0 +1,3 @@
+{
+  "sensor" : "false"
+}
\ No newline at end of file
diff --git a/case-study-sorting-pkg/doc/TokenFormat.json b/case-study-sorting-pkg/doc/TokenFormat.json
index bb02de5b7993166a27064d6a5235df8e984ac94d..763537975a74559b302ea27fb701e3c5bd87ff85 100644
--- a/case-study-sorting-pkg/doc/TokenFormat.json
+++ b/case-study-sorting-pkg/doc/TokenFormat.json
@@ -5,5 +5,6 @@
   "placeSuccess" : "false",
   "humanDetected" : "false",
   "sensorData" : "",
-  "trace" : ""
+  "trace" : "",
+  "locked" : "false"
 }
\ No newline at end of file
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 b5b988eda8cabeb96302fd9a4ec8b19d97e7a94a..d497d256a7cb3dd0201559f447490b23cff21b7f 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 37f7d41f7216b0f71d92a34b2233fac44b02d225..115993ec2d940b587e9e8c8b69af4f8eaa9c0222 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
@@ -3,6 +3,8 @@ 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.*;
@@ -44,25 +46,27 @@ public class Main {
 
         // 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));
+     //   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);
+     //   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));
+     //   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(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();}};
+      //  new Thread(() -> nodeMainExecutor.execute(feedbackNode, nodeConfiguration)) {{start();}};
 
         // FAKE NODES FOR TESTING
 
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/constants/TokenConstants.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/constants/TokenConstants.java
index 17f57f5e98b1dd8f2f4375efc77ed8a3a2556b42..7be0979f026f5b70bef5cf67e54e0f0a259d6673 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/constants/TokenConstants.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/constants/TokenConstants.java
@@ -9,5 +9,6 @@ public final class TokenConstants {
     public static final String SENSOR_DATA = "sensorData";
     public static final String NAME = "name";
     public static final String TRACE = "trace";
+    public static final String LOCKED = "locked";
 
 }
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/fake/FakeServerNode.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/fake/FakeServerNode.java
index aab14426b639e735721ddc2880d6d6dfb8e938d5..c4308b044ece22f6d9415823be11c496691ecbf9 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/fake/FakeServerNode.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/fake/FakeServerNode.java
@@ -10,8 +10,8 @@ import rosjava_srv.StringServiceResponse;
 
 public class FakeServerNode extends AbstractNodeMain {
 
-    private String serviceName;
-    private String nodeName;
+    private final String serviceName;
+    private final String nodeName;
 
     public FakeServerNode(String serviceName, String nodeName) {
         this.serviceName = serviceName;
@@ -20,7 +20,7 @@ public class FakeServerNode extends AbstractNodeMain {
 
     @Override
     public GraphName getDefaultNodeName() {
-        return GraphName.of("fake/" + nodeName);
+        return GraphName.of(nodeName);
     }
 
     @Override
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
new file mode 100644
index 0000000000000000000000000000000000000000..8c34668fbfa898cb8ef57bf7e2cb9abe8809060c
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlEndHandler.java
@@ -0,0 +1,28 @@
+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 ControlEndHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> END_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing RESULT_HANDLING_FUNCTION.");
+
+        for(Map<String, Object> m : maps){
+            for (Map.Entry<String, Object> entry : m.entrySet()) {
+                if(entry.getKey().equals(TokenConstants.LOCKED)){
+                    m.replace(TokenConstants.LOCKED, "true");
+                }
+            }
+        }
+        return maps;
+    };
+
+    public ControlEndHandler(int priority) {
+        super(priority, END_HANDLING_FUNCTION);
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlGetHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlGetHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7e753c1acb0d882222545e16338884b971bced8
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/ControlGetHandler.java
@@ -0,0 +1,29 @@
+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;
+
+public class ControlGetHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> GET_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing GET_HANDLING_FUNCTION.");
+
+        List<Map<String, Object>> res = new ArrayList<>();
+
+        for(Map<String, Object> m : maps){
+            if(!m.get(TokenConstants.LOCKED).equals("true")){
+                res.add(m);
+            }
+        }
+        return res;
+    };
+
+    public ControlGetHandler(int priority) {
+        super(priority, GET_HANDLING_FUNCTION);
+    }
+}
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
new file mode 100644
index 0000000000000000000000000000000000000000..4bd3fa8008d4dc2f6d22113cd8798cc53f042ba7
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickAbortHandler.java
@@ -0,0 +1,24 @@
+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 PickAbortHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PICK_ABORT_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PICK_ABORT_HANDLING_FUNCTION.");
+
+        for (Map<String, Object> m : maps) {
+            m.replace(TokenConstants.PICK_SUCCESS, "abort");
+        }
+        return maps;
+    };
+
+    public PickAbortHandler(int priority) {
+        super(priority, PICK_ABORT_HANDLING_FUNCTION);
+    }
+}
\ No newline at end of file
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickFailHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickFailHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c01cf809bde066f438aaffc25084fc4d77d23f3
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickFailHandler.java
@@ -0,0 +1,24 @@
+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 PickFailHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PICK_FAIL_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PICK_FAIL_HANDLING_FUNCTION.");
+
+        for (Map<String, Object> m : maps) {
+            m.replace(TokenConstants.PICK_SUCCESS, "fail");
+        }
+        return maps;
+    };
+
+    public PickFailHandler(int priority) {
+        super(priority, PICK_FAIL_HANDLING_FUNCTION);
+    }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000000000000000000000000000000000000..3ce105da4486c98afdf2e09e8f46a48a14751e1c
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickHandler.java
@@ -0,0 +1,27 @@
+package de.tudresden.inf.st.sorting.handlers;
+
+import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+public class PickHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PICK_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PICK_HANDLING_FUNCTION.");
+
+        try {
+            Thread.sleep(1000);
+            System.out.println("Fake picking finished.");
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+        return maps;
+    };
+
+    public PickHandler(int priority) {
+        super(priority, PICK_HANDLING_FUNCTION);
+    }
+}
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
new file mode 100644
index 0000000000000000000000000000000000000000..84a99255849fd9797eadefabbf5d6f139734af8e
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PickSuccessHandler.java
@@ -0,0 +1,24 @@
+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 PickSuccessHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PICK_SUCCESS_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PICK_SUCCESS_HANDLING_FUNCTION.");
+
+        for (Map<String, Object> m : maps) {
+            m.replace(TokenConstants.PICK_SUCCESS, "success");
+        }
+        return maps;
+    };
+
+    public PickSuccessHandler(int priority) {
+        super(priority, PICK_SUCCESS_HANDLING_FUNCTION);
+    }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000000000000000000000000000000000000..8ecb6cba739bf74755b6ed73e46eab87103ebb76
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceAbortHandler.java
@@ -0,0 +1,24 @@
+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 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.");
+
+        for (Map<String, Object> m : maps) {
+            m.replace(TokenConstants.PLACE_SUCCESS, "abort");
+        }
+        return maps;
+    };
+
+    public PlaceAbortHandler(int priority) {
+        super(priority, PLACE_ABORT_HANDLING_FUNCTION);
+    }
+}
\ No newline at end of file
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceFailHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceFailHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a51d6d164b1827587f48c853f91fa0094aeb962
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceFailHandler.java
@@ -0,0 +1,24 @@
+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 PlaceFailHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PLACE_FAIL_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PLACE_FAIL_HANDLING_FUNCTION.");
+
+        for (Map<String, Object> m : maps) {
+            m.replace(TokenConstants.PLACE_SUCCESS, "fail");
+        }
+        return maps;
+    };
+
+    public PlaceFailHandler(int priority) {
+        super(priority, PLACE_FAIL_HANDLING_FUNCTION);
+    }
+}
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
new file mode 100644
index 0000000000000000000000000000000000000000..fb4d629cf06cf2f1068bd6987b9d6f898bb3cf4f
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceHandler.java
@@ -0,0 +1,27 @@
+package de.tudresden.inf.st.sorting.handlers;
+
+import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+public class PlaceHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PLACE_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PLACE_HANDLING_FUNCTION.");
+
+        try {
+            Thread.sleep(1000);
+            System.out.println("Fake placing finished.");
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+        return maps;
+    };
+
+    public PlaceHandler(int priority) {
+        super(priority, PLACE_HANDLING_FUNCTION);
+    }
+}
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
new file mode 100644
index 0000000000000000000000000000000000000000..6c1bdd660e4cd5d6e1c09c1f2b64db37f8d60af3
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/PlaceSuccessHandler.java
@@ -0,0 +1,25 @@
+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 PlaceSuccessHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PLACE_SUCCESS_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing PLACE_SUCCESS_HANDLING_FUNCTION.");
+
+        for (Map<String, Object> m : maps) {
+            m.replace(TokenConstants.PLACE_SUCCESS, "success");
+
+        }
+        return maps;
+    };
+
+    public PlaceSuccessHandler(int priority) {
+        super(priority, PLACE_SUCCESS_HANDLING_FUNCTION);
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataGetHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataGetHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4d357f1cf835b142a4d2c7d8fc51d50424cb268
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataGetHandler.java
@@ -0,0 +1,24 @@
+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 SensorDataGetHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> GET_DATA_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing GET_DATA_HANDLING_FUNCTION.");
+
+        for(Map<String, Object> m : maps){
+            m.replace(TokenConstants.SENSOR_DATA, "FAKE DATA");
+        }
+        return maps;
+    };
+
+    public SensorDataGetHandler(int priority) {
+        super(priority, GET_DATA_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
new file mode 100644
index 0000000000000000000000000000000000000000..f640562d8ec6f16525715fdfdf41e1aa356a4662
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SensorDataProcessingHandler.java
@@ -0,0 +1,44 @@
+package de.tudresden.inf.st.sorting.handlers;
+
+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.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;
+
+public class SensorDataProcessingHandler extends TransitionHandler {
+
+    final static Function<List<Map<String, Object>>, List<Map<String, Object>>> PROCESS_DATA_HANDLING_FUNCTION = maps -> {
+        System.out.println("Executing GET_DATA_HANDLING_FUNCTION.");
+
+        try {
+            Map<String, Object> fakeRes = parse(Files.readString(Path.of("/doc/FakeConfig.json")));
+
+            for(Map<String, Object> m : maps){
+                m.replace(TokenConstants.HUMAN_DETECTED, fakeRes.get("sensor"));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return maps;
+    };
+
+    public SensorDataProcessingHandler(int priority) {
+        super(priority, PROCESS_DATA_HANDLING_FUNCTION);
+    }
+
+    private static Map<String, Object> parse(java.lang.String s) {
+        Gson gson = new GsonBuilder().create();
+        Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
+        return gson.fromJson(s, mapType);
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SortColorHandler.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SortColorHandler.java
index 2a673e11cbf2c208d97e1068e52f4251d101c573..1cee2098a3802654186ff5ab408e93b1b9440635 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SortColorHandler.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/handlers/SortColorHandler.java
@@ -18,9 +18,6 @@ public class SortColorHandler extends TransitionHandler {
                     String newTrace = oldTrace + "-" + "SortColor";
                     m.replace(TokenConstants.TRACE, newTrace);
                 }
-                if(entry.getKey().equals(TokenConstants.TRACE)){
-
-                }
             }
         }
         return maps;
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
new file mode 100644
index 0000000000000000000000000000000000000000..4afc1647ff936bf39ce9f562173d6581a84c1d97
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/ExecutorLauncher.java
@@ -0,0 +1,33 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.handlers.*;
+import de.tudresden.inf.st.sorting.nodes.ExecutorNode;
+
+import java.net.URI;
+
+public class ExecutorLauncher extends NodeLauncher {
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/ExecutorNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        ExecutorNode executorNode = new ExecutorNode("ExecutorNode", petriNet, MQTT_HOST);
+
+        executorNode.registerHandler("Pick", new PickHandler(1));
+        executorNode.registerHandler("PickingSuccess", new PickSuccessHandler(1));
+        executorNode.registerHandler("PickingFail", new PickFailHandler(1));
+        executorNode.registerHandler("PickingAbort", new PickAbortHandler(1));
+
+        executorNode.registerHandler("Place", new PlaceHandler(1));
+        executorNode.registerHandler("PlacingSuccess", new PlaceSuccessHandler(1));
+        executorNode.registerHandler("PlacingFail", new PlaceFailHandler(1));
+        executorNode.registerHandler("PlacingAbort", new PlaceAbortHandler(1));
+
+        new Thread(() -> nodeMainExecutor.execute(executorNode, nodeConfiguration)) {{start();}};
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/FeedbackLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/FeedbackLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..94ab423566ce543ece4cbbd40e4e147614f190a2
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/FeedbackLauncher.java
@@ -0,0 +1,24 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.handlers.ShowResultHandler;
+import de.tudresden.inf.st.sorting.nodes.FeedbackNode;
+
+import java.net.URI;
+
+public class FeedbackLauncher extends NodeLauncher {
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/FeedbackNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        FeedbackNode feedbackNode = new FeedbackNode("FeedbackNode", petriNet, MQTT_HOST);
+        feedbackNode.registerHandler("ShowFeedback", new ShowResultHandler(1));
+
+        new Thread(() -> nodeMainExecutor.execute(feedbackNode, nodeConfiguration)) {{start();}};
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/LeftControllerLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/LeftControllerLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..00dbf2bffa44e23f795ccbc0f318676285f2b054
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/LeftControllerLauncher.java
@@ -0,0 +1,22 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.nodes.LeftControllerNode;
+
+import java.net.URI;
+
+public class LeftControllerLauncher extends NodeLauncher {
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/LeftControllerNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        LeftControllerNode leftControllerNode = new LeftControllerNode("LeftControllerNode", petriNet, MQTT_HOST);
+
+        new Thread(() -> nodeMainExecutor.execute(leftControllerNode, nodeConfiguration)) {{start();}};
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/NodeLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/NodeLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..737560a6e3fad7c20d23890e9118ec8ef893626f
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/NodeLauncher.java
@@ -0,0 +1,16 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import org.ros.node.DefaultNodeMainExecutor;
+import org.ros.node.NodeConfiguration;
+import org.ros.node.NodeMainExecutor;
+
+public abstract class NodeLauncher {
+
+    protected static final String ROS_HOST = "localhost";
+    protected static final String ROS_MASTER_URI = "http://localhost:11311";
+    protected static final String MQTT_HOST = "localhost";
+
+    protected static final NodeConfiguration nodeConfiguration = NodeConfiguration.newPublic(ROS_HOST);
+    protected static final NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault();
+
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/RightControllerLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/RightControllerLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..607804746d98c8826df8d118fe97858c3f270b78
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/RightControllerLauncher.java
@@ -0,0 +1,22 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.nodes.RightControllerNode;
+
+import java.net.URI;
+
+public class RightControllerLauncher extends NodeLauncher {
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/RightControllerNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        RightControllerNode rightControllerNode = new RightControllerNode("RightControllerNode", petriNet, MQTT_HOST);
+
+        new Thread(() -> nodeMainExecutor.execute(rightControllerNode, nodeConfiguration)) {{start();}};
+    }
+}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SelectorLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SelectorLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..983e223d42528c6c94a5b29c8005b79a9bc5fc95
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SelectorLauncher.java
@@ -0,0 +1,26 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.handlers.SortColorHandler;
+import de.tudresden.inf.st.sorting.nodes.SelectorNode;
+
+import java.net.URI;
+
+public class SelectorLauncher extends NodeLauncher{
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/SelectorNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        SelectorNode selectorNode = new SelectorNode("SelectorNode", petriNet, MQTT_HOST);
+        selectorNode.registerHandler("SortGreen", new SortColorHandler(1));
+        selectorNode.registerHandler("SortRed", new SortColorHandler(1));
+        selectorNode.registerHandler("SortBlue", new SortColorHandler(1));
+
+        new Thread(() -> nodeMainExecutor.execute(selectorNode, 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
new file mode 100644
index 0000000000000000000000000000000000000000..5ba5e63f4fe17918ec9dc4418e957caf61bb98ab
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SensorLauncher.java
@@ -0,0 +1,26 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.handlers.SensorDataGetHandler;
+import de.tudresden.inf.st.sorting.handlers.SensorDataProcessingHandler; 
+import de.tudresden.inf.st.sorting.nodes.SensorNode;
+
+import java.net.URI;
+
+public class SensorLauncher extends NodeLauncher {
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/SelectorNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        SensorNode sensorNode = new SensorNode("SensorNode", petriNet, MQTT_HOST);
+        sensorNode.registerHandler("GetSensorData", new SensorDataGetHandler(1));
+        sensorNode.registerHandler("ProcessSensorData", new SensorDataProcessingHandler(1));
+
+        new Thread(() -> nodeMainExecutor.execute(sensorNode, nodeConfiguration)) {{start();}};
+    }
+}
\ No newline at end of file
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SynchronizerLauncher.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SynchronizerLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c1bb6bd0b31799e0290517cec1a9fab5cd5b5d0
--- /dev/null
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/launcher/SynchronizerLauncher.java
@@ -0,0 +1,26 @@
+package de.tudresden.inf.st.sorting.launcher;
+
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
+import de.tudresden.inf.st.sorting.handlers.ControlEndHandler;
+import de.tudresden.inf.st.sorting.handlers.ControlGetHandler;
+import de.tudresden.inf.st.sorting.nodes.SynchronizerNode;
+
+import java.net.URI;
+
+public class SynchronizerLauncher extends NodeLauncher {
+
+    public static void main(java.lang.String[] args) {
+
+        nodeConfiguration.setMasterUri(URI.create(ROS_MASTER_URI));
+
+        String petriNetPath = "/nets/SynchronizerNode.pnml";
+        PetriNet petriNet = PnmlParser.parsePnml(petriNetPath, true).get(0);
+
+        SynchronizerNode synchronizerNode = new SynchronizerNode("SynchronizerNode", petriNet, MQTT_HOST);
+        synchronizerNode.registerHandler("Get", new ControlGetHandler(1));
+        synchronizerNode.registerHandler("End", new ControlEndHandler(1));
+
+        new Thread(() -> nodeMainExecutor.execute(synchronizerNode, nodeConfiguration)) {{start();}};
+    }
+}
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 cb3c3c9157df317a94d421376a6be3811e36506c..9a99c2a10e41e4ae7164e66dc34475f5dbac53a6 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
@@ -1,27 +1,59 @@
 package de.tudresden.inf.st.sorting.nodes;
 
 import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
-import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
-import de.tudresden.inf.st.pnml.jastadd.model.Transition;
-import de.tudresden.inf.st.pnml.jastadd.model.TransitionSelectionResult;
+import de.tudresden.inf.st.pnml.jastadd.model.*;
+import de.tudresden.inf.st.sorting.constants.TokenConstants;
 
 import java.util.List;
 
 public class ExecutorNode extends DiNeRosNode {
 
-    // TODO implement this node
 
-    public ExecutorNode(String nodeName, PetriNet petriNet, String rcHost, String gcProtocol) {
-        super(nodeName, petriNet, rcHost, gcProtocol);
+    public ExecutorNode(String nodeName, PetriNet petriNet, String rcHost) {
+        super(nodeName, petriNet, rcHost, "mqtt");
     }
 
     @Override
     protected TransitionSelectionResult onChange(List<Transition> list) {
-        return null;
+
+        for (Transition t : list) {
+            if (t.getId().equals("TransitionUnsafe")) {
+                for (Place p : t.incomingPlaces()) {
+                    if (p.getId().equals("SensorResponse")) {
+                        if (parseToken(marking.resolveBalloonPlace(p).getBalloonMarking(0).
+                                getValue()).get(TokenConstants.HUMAN_DETECTED).equals("true")) {
+                            System.out.println("Firing: " + t.getId());
+                            return new FiringSelectionSuccess(t);
+                        }
+                        break;
+                    }
+                }
+            }
+
+            if (t.getId().equals("TransitionSafe")) {
+                for (Place p : t.incomingPlaces()) {
+                    if (p.getId().equals("SensorResponse")) {
+                        if (parseToken(marking.resolveBalloonPlace(p).getBalloonMarking(0).
+                                getValue()).get(TokenConstants.HUMAN_DETECTED).equals("false")) {
+                            System.out.println("Firing: " + t.getId());
+                            return new FiringSelectionSuccess(t);
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        TransitionSelectionResult res = fireRandomEnabledTransition(list);
+
+        if(res.isFiringSelectionSuccess()){
+            System.out.println("Firing: " + res.asFiringSelectionSuccess().getTransition().getId());
+        }
+
+        return res;
     }
 
     @Override
     protected TransitionSelectionResult onStartupEnded(List<Transition> list) {
-        return null;
+        return this.onChange(list);
     }
 }
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/FeedbackNode.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/FeedbackNode.java
deleted file mode 100644
index 6b8e77fb5cd13f4477ebbfc3286d91f18b7063b1..0000000000000000000000000000000000000000
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/FeedbackNode.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package de.tudresden.inf.st.sorting.nodes;
-
-import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
-import de.tudresden.inf.st.pnml.jastadd.model.FiringSelectionNone;
-import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
-import de.tudresden.inf.st.pnml.jastadd.model.Transition;
-import de.tudresden.inf.st.pnml.jastadd.model.TransitionSelectionResult;
-import de.tudresden.inf.st.sorting.utils.LogUtils;
-
-import java.util.List;
-
-public class FeedbackNode extends DiNeRosNode {
-
-    public FeedbackNode(String nodeName, PetriNet petriNet, String rcHost) {
-        super(nodeName, petriNet, rcHost, "mqtt");
-    }
-
-    @Override
-    protected TransitionSelectionResult onChange(List<Transition> list) {
-        LogUtils.printTransitions(list);
-        if(list.size() == 0){
-            return new FiringSelectionNone();
-        }
-
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
-        System.out.println("Selected transition: " + res.asFiringSelectionSuccess().getTransition().getId());
-        return res;
-    }
-
-    @Override
-    protected TransitionSelectionResult onStartupEnded(List<Transition> list) {
-        LogUtils.printTransitions(list);
-        if(list.size() == 0){
-            return new FiringSelectionNone();
-        }
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
-        System.out.println("Selected transition: " + res.asFiringSelectionSuccess().getTransition().getId());
-        return res;
-    }
-}
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SelectorNode.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SelectorNode.java
index e44ba5fbb465f49de5051d5792f5be8911008c92..87f9e075afd04393e3b48aee18c1c828e128adbd 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SelectorNode.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SelectorNode.java
@@ -1,37 +1,12 @@
 package de.tudresden.inf.st.sorting.nodes;
 
-import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
+import de.tudresden.inf.st.pnml.engine.ros.DiNeRosDefaultNode;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
-import de.tudresden.inf.st.sorting.utils.LogUtils;
 
-import java.util.List;
-
-public class SelectorNode extends DiNeRosNode {
+public class SelectorNode extends DiNeRosDefaultNode {
 
+    // mosquitto_pub -t 'Green' -m 'true'
     public SelectorNode(String nodeName, PetriNet petriNet, String rcHost) {
         super(nodeName, petriNet, rcHost, "mqtt");
     }
-
-    @Override
-    protected TransitionSelectionResult onChange(List<Transition> list) {
-        LogUtils.printTransitions(list);
-        if(list.size() == 0){
-            return new FiringSelectionNone();
-        }
-
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
-        System.out.println("Selected transition: " + res.asFiringSelectionSuccess().getTransition().getId());
-        return res;
-    }
-
-    @Override
-    protected TransitionSelectionResult onStartupEnded(List<Transition> list) {
-        LogUtils.printTransitions(list);
-        if(list.size() == 0){
-            return new FiringSelectionNone();
-        }
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
-        System.out.println("Selected transition: " + res.asFiringSelectionSuccess().getTransition().getId());
-        return res;
-    }
 }
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SensorNode.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SensorNode.java
index d121980c8a0ed899b739e1025713e4056fe834ff..84291864280e4b5039b7e77eae4f520e377307c6 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SensorNode.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SensorNode.java
@@ -1,27 +1,12 @@
 package de.tudresden.inf.st.sorting.nodes;
 
-import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
+import de.tudresden.inf.st.pnml.engine.ros.DiNeRosDefaultNode;
 import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
-import de.tudresden.inf.st.pnml.jastadd.model.Transition;
-import de.tudresden.inf.st.pnml.jastadd.model.TransitionSelectionResult;
 
-import java.util.List;
+public class SensorNode extends DiNeRosDefaultNode {
 
-public class SensorNode extends DiNeRosNode {
-
-    // TODO implement this node
-
-    public SensorNode(String nodeName, PetriNet petriNet, String rcHost, String gcProtocol) {
-        super(nodeName, petriNet, rcHost, gcProtocol);
+    public SensorNode(String nodeName, PetriNet petriNet, String rcHost) {
+        super(nodeName, petriNet, rcHost, "mqtt");
     }
 
-    @Override
-    protected TransitionSelectionResult onChange(List<Transition> list) {
-        return null;
-    }
-
-    @Override
-    protected TransitionSelectionResult onStartupEnded(List<Transition> list) {
-        return null;
-    }
 }
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SynchronizerNode.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SynchronizerNode.java
index d81f5bb2c85ede3fe7fa4b3730e6aebf7b0d8b83..04a547e07dfb3da012fb0fc7c4e78b93e6b09b9e 100644
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SynchronizerNode.java
+++ b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/nodes/SynchronizerNode.java
@@ -1,41 +1,11 @@
 package de.tudresden.inf.st.sorting.nodes;
 
-import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
-import de.tudresden.inf.st.pnml.jastadd.model.FiringSelectionNone;
+import de.tudresden.inf.st.pnml.engine.ros.DiNeRosDefaultNode;
 import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
-import de.tudresden.inf.st.pnml.jastadd.model.Transition;
-import de.tudresden.inf.st.pnml.jastadd.model.TransitionSelectionResult;
-import de.tudresden.inf.st.sorting.utils.LogUtils;
 
-import java.util.List;
-
-public class SynchronizerNode extends DiNeRosNode {
+public class SynchronizerNode extends DiNeRosDefaultNode {
 
     public SynchronizerNode(String nodeName, PetriNet petriNet, String rcHost) {
         super(nodeName, petriNet, rcHost, "mqtt");
     }
-
-    @Override
-    protected TransitionSelectionResult onChange(List<Transition> list) {
-        LogUtils.printTransitions(list);
-        if(list.size() == 0){
-            return new FiringSelectionNone();
-        }
-
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
-        System.out.println("Selected transition: " + res.asFiringSelectionSuccess().getTransition().getId());
-        return res;
-    }
-
-    @Override
-    protected TransitionSelectionResult onStartupEnded(List<Transition> list) {
-        LogUtils.printTransitions(list);
-        if(list.size() == 0){
-            return new FiringSelectionNone();
-        }
-
-        TransitionSelectionResult res = fireRandomEnabledTransition(list);
-        System.out.println("Selected transition: " + res.asFiringSelectionSuccess().getTransition().getId());
-        return res;
-    }
 }
diff --git a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/utils/LogUtils.java b/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/utils/LogUtils.java
deleted file mode 100644
index 930135085423c53b69c2edecc5b18a8e4880b86e..0000000000000000000000000000000000000000
--- a/case-study-sorting-pkg/src/main/java/de/tudresden/inf/st/sorting/utils/LogUtils.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.tudresden.inf.st.sorting.utils;
-
-import de.tudresden.inf.st.pnml.jastadd.model.Transition;
-
-import java.util.List;
-
-public class LogUtils {
-
-    public static void printTransitions(List<Transition> list){
-        for(Transition t : list){
-            System.out.println("Enabled t: " + t.getId());
-        }
-    }
-}
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 364917b9ddac70199d94a46657f6a63f768b214b..1091e4cef8b3e1bd741ec1b7dbcfa0c3a102ab07 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/ExecutorNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/ExecutorNode.pnml
@@ -202,7 +202,7 @@
                     </place>
                     <transition id="PlacingAbort">
                         <name>
-                            <text>PlaceingAbort</text>
+                            <text>PlacingAbort</text>
                         </name>
                         <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
 
@@ -453,14 +453,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/src/main/resources/nets/FeedbackNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/FeedbackNode.pnml
index 3375c9ba77e6529a2236a50f5512335f137e974d..c8a2ef66a0618fc207da115f0f56420e673ad084 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/FeedbackNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/FeedbackNode.pnml
@@ -60,14 +60,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/src/main/resources/nets/LeftControllerNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/LeftControllerNode.pnml
index ee9dbd9e4146b14065a9f52245c5255e03057d8d..4d6ce660b011e2f4bda759c55325e2709b562509 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/LeftControllerNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/LeftControllerNode.pnml
@@ -85,14 +85,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/src/main/resources/nets/RightControllerNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/RightControllerNode.pnml
index eb63ce0e322993895ddb7e27a046099ae1afb2d9..a14e84ad556196fbab9fb0aec3c425c7ee935e1c 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/RightControllerNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/RightControllerNode.pnml
@@ -85,14 +85,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/src/main/resources/nets/SelectorNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/SelectorNode.pnml
index eb274968060835711afe040b74f4a090dee3ab4c..c914a69407a531fba657afc87fba6788533f9cd6 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/SelectorNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/SelectorNode.pnml
@@ -19,7 +19,7 @@
                         <balloonMarking>
                             <tokens>
                                 <token>{"color" : "green", "name" : "green1", "pickSuccess" : "false", "placeSuccess" : "false",
-                                        "humanDetected" : "false", "sensorData" : "", "trace" : "" } </token>
+                                        "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -51,7 +51,7 @@
                         <balloonMarking>
                             <tokens>
                                 <token>{"color" : "blue", "name" : "blue1", "pickSuccess" : "false", "placeSuccess" : "false",
-                                    "humanDetected" : "false", "sensorData" : "", "trace" : "" } </token>
+                                    "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -71,7 +71,7 @@
                         <balloonMarking>
                             <tokens>
                                 <token>{"color" : "red", "name" : "red1", "pickSuccess" : "false", "placeSuccess" : "false",
-                                    "humanDetected" : "false", "sensorData" : "", "trace" : "" } </token>
+                                    "humanDetected" : "false", "sensorData" : "", "trace" : "", "locked" : "false" } </token>
                             </tokens>
                         </balloonMarking>
                     </toolspecific>
@@ -166,14 +166,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
diff --git a/case-study-sorting-pkg/src/main/resources/nets/SensorNode.pnml b/case-study-sorting-pkg/src/main/resources/nets/SensorNode.pnml
index e410503238de1f8cd7a669019d55b0fe86be3d32..a292b80cac058616a138451dcbd5bd34f9c39ec3 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/SensorNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/SensorNode.pnml
@@ -99,14 +99,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl
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 c42c77e412b8d209cf43273c3eab19a9852d3368..c96d49cdec29d6dda51db8bd8c023a68f3b6a891 100644
--- a/case-study-sorting-pkg/src/main/resources/nets/SynchronizerNode.pnml
+++ b/case-study-sorting-pkg/src/main/resources/nets/SynchronizerNode.pnml
@@ -151,8 +151,8 @@
                             <subnet>SharedSync</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":"NONE", "locked" : "true" }
                                     </token>
                                 </tokens>
                             </balloonMarking>
@@ -170,14 +170,14 @@
         <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1">
 
             <ports>
-                <port name="RightCellTopic" placeType="pub">GreenOut</port>
-                <port name="LeftCellTopic" placeType="pub">BlueOut</port>
-                <port name="LeftCellTopic" placeType="pub">RedOut</port>
-                <port name="UITopic" placeType="pub">L-Done</port>
-                <port name="UITopic" placeType="pub">R-Done</port>
-                <port name="RightCellTopic" placeType="sub">R-AwaitingControl</port>
-                <port name="LeftCellTopic" placeType="sub">L-AwaitingControl</port>
-                <port name="UITopic" placeType="sub">FeedbackIn</port>
+                <port name="RightCellTopic" limit="10" placeType="pub">GreenOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">BlueOut</port>
+                <port name="LeftCellTopic" limit="10" placeType="pub">RedOut</port>
+                <port name="UITopic" limit="10" placeType="pub">L-Done</port>
+                <port name="UITopic" limit="10" placeType="pub">R-Done</port>
+                <port name="RightCellTopic" limit="10" placeType="sub">R-AwaitingControl</port>
+                <port name="LeftCellTopic" limit="10" placeType="sub">L-AwaitingControl</port>
+                <port name="UITopic" limit="10" placeType="sub">FeedbackIn</port>
                 <port cResponsePlace="R-Ready" limit="-1" name="getControlService" placeType="creq">R-AwaitingControl
                 </port>
                 <port cResponsePlace="L-Ready" limit="-1" name="getControlService" placeType="creq">L-AwaitingControl