diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
index 9093fce3d3e0754a51433e8843da0cd95e4ef3d2..66c72a54b5252a0ac349af66d48beef4a0c8886c 100644
--- a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
+++ b/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
@@ -6,6 +6,7 @@ import de.tudresden.inf.st.export.PnmlExporter;
 import de.tudresden.inf.st.pnml.PnmlParser;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
 import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
+import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -146,14 +147,9 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 String inLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
                 String inSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
 
-                InputSignalTransition sourceIst = new InputSignalTransition();
-                sourceIst.setName(new Name().setText(ist.getName().getText() + sufix + serviceCount));
-                sourceIst.setId(ist.getId() + sufix + serviceCount);
+                InputSignalTransition sourceIst = createRosInputTransition(ist, serviceCount, sufix);
 
-                ServiceTransitionInformation tInfoSource = new ServiceTransitionInformation();
-                tInfoSource.setSubNet(inSubNet);
-                tInfoSource.setLocation(inLocation);
-                tInfoSource.setServiceName(ist.getStaticTransitionInformation().asServiceTransitionInformation().getServiceName());
+                ServiceTransitionInformation tInfoSource = copyServiceTransitionInformation(ist, inLocation, inSubNet);
 
                 // attributized infos need to be written back to XML
                 JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>();
@@ -163,26 +159,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
                 sourceIst.setToolspecificList(inputToolInfoJastAddList);
                 sourceIst.setMutualTransitionInformation(tInfoSource);
-
-                // Reconnect Input Signals
-                for (InputSignalBinding isb : ist.getStaticInputSignalBindingList()) {
-
-                    InputSignalBinding newIsb = new InputSignalBinding();
-                    newIsb.setInputSignalValue(isb.getInputSignalValue());
-                    newIsb.setTransitionID(isb.getTransitionID());
-                    newIsb.setId(isb.getId());
-                    newIsb.setInputSignalID(isb.getInputSignalID());
-
-                    sourceIst.addMutualInputSignalBinding(newIsb);
-                }
-
-                // Get all incoming arcs and connect them to new output transition
-                for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) {
-
-                    if (arc.getTarget().getId().equals(transition.getId())) {
-                        arc.setTarget(sourceIst);
-                    }
-                }
+                reconnectSourceTransitionSignalsAndArcs(transition, ist, p, sourceIst);
 
                 // Add new transitions to net
                 transitionsToAdd.add(sourceIst);
@@ -212,22 +189,16 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 String outLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
                 String outSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
 
-                InputSignalTransition requestServerIst = new InputSignalTransition();
-                requestServerIst.setName(new Name().setText(ist.getName().getText() + sufix + serviceCount));
-                requestServerIst.setId(ist.getId() + sufix + serviceCount);
+                InputSignalTransition requestServerIst = createRosInputTransition(ist, serviceCount, sufix);
 
-                ServiceTransitionInformation tInfoTarget = new ServiceTransitionInformation();
-                tInfoTarget.setSubNet(outSubNet);
-                tInfoTarget.setLocation(outLocation);
-                tInfoTarget.setServiceName(ist.getStaticTransitionInformation().asServiceTransitionInformation().getServiceName());
+                ServiceTransitionInformation tInfoTarget = copyServiceTransitionInformation(ist, outLocation, outSubNet);
 
-                // attributized infos need to be written back to XML
+                // attribute infos need to be written back to XML
                 JastAddList<ToolInfo> outputToolInfoJastAddList = new JastAddList<>();
 
                 tInfoTarget.setType(targetType);
                 outputToolInfoJastAddList.add(buildServiceToolSpecifics(targetType, outLocation, outSubNet, tInfoTarget.getServiceName(), null));
 
-
                 requestServerIst.setToolspecificList(outputToolInfoJastAddList);
                 requestServerIst.setMutualTransitionInformation(tInfoTarget);
 
@@ -309,9 +280,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 String outLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
                 String outSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
 
-                InputSignalTransition subscriberIst = new InputSignalTransition();
-                subscriberIst.setName(new Name().setText(channelIst.getName().getText() + "-subscriber-" + subscriberCount));
-                subscriberIst.setId(channelIst.getId() + "-subscriber-" + subscriberCount);
+                InputSignalTransition subscriberIst = createRosInputTransition(channelIst, subscriberCount, "-subscriber-");
 
                 TopicTransitionInformation tInfoTarget = new TopicTransitionInformation();
                 tInfoTarget.setSubNet(outSubNet);
@@ -373,9 +342,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 String inLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
                 String inSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
 
-                InputSignalTransition publisherIst = new InputSignalTransition();
-                publisherIst.setName(new Name().setText(channelIst.getName().getText() + "-publisher-" + publisherCount));
-                publisherIst.setId(channelIst.getId() + "-publisher-" + publisherCount);
+                InputSignalTransition publisherIst = createRosInputTransition(channelIst, publisherCount, "-publisher-");
 
                 TopicTransitionInformation tInfoSource = new TopicTransitionInformation();
                 tInfoSource.setSubNet(inSubNet);
@@ -401,24 +368,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 publisherIst.setMutualTransitionInformation(tInfoSource);
 
                 // Reconnect Input Signals
-                for (InputSignalBinding isb : channelIst.getStaticInputSignalBindingList()) {
-
-                    InputSignalBinding newIsb = new InputSignalBinding();
-                    newIsb.setInputSignalValue(isb.getInputSignalValue());
-                    newIsb.setTransitionID(isb.getTransitionID());
-                    newIsb.setId(isb.getId());
-                    newIsb.setInputSignalID(isb.getInputSignalID());
-
-                    publisherIst.addMutualInputSignalBinding(newIsb);
-                }
-
-                // Get all incoming arcs and connect them to new output transition
-                for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) {
-
-                    if (arc.getTarget().getId().equals(transition.getId())) {
-                        arc.setTarget(publisherIst);
-                    }
-                }
+                reconnectSourceTransitionSignalsAndArcs(transition, channelIst, p, publisherIst);
 
                 // Add new transitions to net
                 transitionsToAdd.add(publisherIst);
@@ -441,23 +391,22 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
     private static PetriNet createdSeparatedNetByLocation(PetriNet petriNet, String location) {
 
-        PetriNet separatedNet = petriNet;
         Set<String> removedTransitionIds = new HashSet<>();
         Set<String> removePlaceIds = new HashSet<>();
 
-        for (Place place : separatedNet.allPlaces()) {
+        for (Place place : petriNet.allPlaces()) {
             if (!place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(location)) {
                 removePlaceIds.add(place.getId());
             }
         }
 
-        for (Transition transition : separatedNet.allTransitions()) {
+        for (Transition transition : petriNet.allTransitions()) {
             if (!transition.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(location)) {
                 removedTransitionIds.add(transition.getId());
             }
         }
 
-        for (Arc arc : separatedNet.allArcs()) {
+        for (Arc arc : petriNet.allArcs()) {
             if (removedTransitionIds.contains(arc.getSource().getId()) || removedTransitionIds.contains(arc.getTarget().getId())
                     || removePlaceIds.contains(arc.getSource().getId()) || removePlaceIds.contains(arc.getTarget().getId())) {
                 logger.info("removing arc " + arc.getId() + " from net");
@@ -465,14 +414,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             }
         }
 
-        for (Place place : separatedNet.allPlaces()) {
+        for (Place place : petriNet.allPlaces()) {
             if (!place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(location)) {
                 logger.info("removing place " + place.getId() + " from net");
                 place.removeSelf();
             }
         }
 
-        for (Transition transition : separatedNet.allTransitions()) {
+        for (Transition transition : petriNet.allTransitions()) {
 
             if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){
                 if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getSubNet().equals(location)) {
@@ -489,10 +438,10 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             }
         }
 
-        separatedNet.flushTreeCache();
-        separatedNet.flushAttrAndCollectionCache();
+        petriNet.flushTreeCache();
+        petriNet.flushAttrAndCollectionCache();
 
-        return separatedNet;
+        return petriNet;
     }
 
     private static ToolInfo buildTopicToolSpecifics(String type, String location, String subnet, String topic, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) {
@@ -603,4 +552,46 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
         return null;
     }
+
+    private static void reconnectInputSignals(InputSignalTransition sourceIst, InputSignalBinding isb) {
+        InputSignalBinding newIsb = new InputSignalBinding();
+        newIsb.setInputSignalValue(isb.getInputSignalValue());
+        newIsb.setTransitionID(isb.getTransitionID());
+        newIsb.setId(isb.getId());
+        newIsb.setInputSignalID(isb.getInputSignalID());
+
+        sourceIst.addMutualInputSignalBinding(newIsb);
+    }
+
+    @NotNull
+    private static InputSignalTransition createRosInputTransition(InputSignalTransition ist, int serviceCount, String sufix) {
+        InputSignalTransition sourceIst = new InputSignalTransition();
+        sourceIst.setName(new Name().setText(ist.getName().getText() + sufix + serviceCount));
+        sourceIst.setId(ist.getId() + sufix + serviceCount);
+        return sourceIst;
+    }
+
+    @NotNull
+    private static ServiceTransitionInformation copyServiceTransitionInformation(InputSignalTransition ist, String inLocation, String inSubNet) {
+        ServiceTransitionInformation tInfoSource = new ServiceTransitionInformation();
+        tInfoSource.setSubNet(inSubNet);
+        tInfoSource.setLocation(inLocation);
+        tInfoSource.setServiceName(ist.getStaticTransitionInformation().asServiceTransitionInformation().getServiceName());
+        return tInfoSource;
+    }
+
+    private static void reconnectSourceTransitionSignalsAndArcs(Transition transition, InputSignalTransition ist, Place p, InputSignalTransition sourceIst) {
+        // Reconnect Input Signals
+        for (InputSignalBinding isb : ist.getStaticInputSignalBindingList()) {
+            reconnectInputSignals(sourceIst, isb);
+        }
+
+        // Get all incoming arcs and connect them to new output transition
+        for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) {
+
+            if (arc.getTarget().getId().equals(transition.getId())) {
+                arc.setTarget(sourceIst);
+            }
+        }
+    }
 }
\ No newline at end of file