diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java
index 182a311db3be860c114136ab85f1acb4b11cb3fe..4ba7d5464859f316398672aa68c14bb7ca7e7a09 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java
@@ -27,9 +27,10 @@ public class Main {
         List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
 
         List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>();
+        GlobalToLocalNetsPostProcessor processor = new GlobalToLocalNetsPostProcessor();
 
         for (PetriNet pn : petriNets) {
-            List<PetriNet> pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn);
+            List<PetriNet> pnl = processor.disconnectNets(pn);
             disconnectedPetriNets.add(pnl);
         }
 
@@ -44,8 +45,8 @@ public class Main {
 
         for (int i = 0; i < disconnectedPetriNets.size(); i++) {
             for (int j = 0; j < disconnectedPetriNets.get(i).size(); j++) {
-                logger.info("Exporting splitted Petri net containing: ");
-                PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j));
+                logger.info("Exporting split Petri net containing: ");
+                PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j), true, false);
 
                 try {
                     PnmlExporter.serializeToPnmlFile(disconnectedPetriNets.get(i).get(j), "-pnml-net-" + i + "-" + j);
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java
index d8199bb669e4e15dfd361a503a4ef36b46709a61..316ec2cd4cf326e5bd1dbd220f7aa11914224337 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java
@@ -3,7 +3,7 @@ package de.tudresden.inf.st.pnml.splitter.constants;
 public final class SplitterPnmlConstants {
 
     public static final String SPLITTER_TOOL_VERSION = "0.0.1";
-    public static final String SPLITTER_TOOL_NAME = "de.tudresden.inf.st.pnml.distributedPN";
+    public static final String SPLITTER_TOOL_NAME = "de.tudresden.inf.st.pnml.splitter";
 
     public static final String TOOL_KEY = "tool";
     public static final String VERSION_KEY = "version";
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java
index fa30c7fb64a27eb393aa160c056107e2ecf6f287..9288316dbf3fd998ae975e587a268ee490112f8b 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java
@@ -1,50 +1,50 @@
 package de.tudresden.inf.st.pnml.splitter.copy;
 
-import de.tudresden.inf.st.pnml.jastadd.model.DefaultTransitionInformation;
-import de.tudresden.inf.st.pnml.jastadd.model.InputSignalBinding;
-import de.tudresden.inf.st.pnml.jastadd.model.InputSignalTransition;
-import de.tudresden.inf.st.pnml.jastadd.model.TransitionInformation;
+import de.tudresden.inf.st.pnml.jastadd.model.*;
 
 public class CopyPrimitiveElements {
 
-    public static InputSignalTransition copyInputSignalTransition(InputSignalTransition ist, String idPrefix, String instance){
-
-        InputSignalTransition istCopy = new InputSignalTransition();
+    public static DinerosTransition copySignalTransition(DinerosTransition ist, String idPrefix){
 
+        DinerosTransition istCopy = new DinerosTransition();
         istCopy.setId(idPrefix + ist.getId());
-
-        for(InputSignalBinding isb : ist.getStaticInputSignalBindingList()){
-            istCopy.addMutualInputSignalBinding(copyInputputSignalBinding(isb, idPrefix));
-        }
-
-        istCopy.setMutualTransitionInformation(copyDefaultTransitionInformation(ist.getStaticTransitionInformation(), idPrefix, instance));
-
+        istCopy.setMutableTransitionInformation(
+                copySignalTransitionInformation(ist.getStaticTransitionInformation()
+                        .asSignalTransitionInformation()));
         return istCopy;
     }
 
-    public static InputSignalBinding copyInputputSignalBinding(InputSignalBinding isb, String idPrefix){
-
-        InputSignalBinding isbCopy = new InputSignalBinding();
+    public static TransitionInformation copySignalTransitionInformation (SignalTransitionInformation ti){
 
-        isbCopy.setId(idPrefix + isb.getId());
-        isbCopy.setInputSignalID(isb.getInputSignalID());
-        isbCopy.setTransitionID(isb.getTransitionID());
-        isbCopy.setInputSignalValue(isb.getInputSignalValue());
+        SignalTransitionInformation tiCopy = new SignalTransitionInformation();
 
-        return isbCopy;
-    }
-
-    public static TransitionInformation copyDefaultTransitionInformation (TransitionInformation ti, String idPrefix, String instance){
-
-        DefaultTransitionInformation tiCopy = new DefaultTransitionInformation();
-
-        tiCopy.setInstance(instance);
         tiCopy.setSubNet(ti.getSubNet());
-        tiCopy.setType(ti.getType());
-        tiCopy.setLocation(tiCopy.getLocation());
-        tiCopy.setOutputLimit(ti.getOutputLimit());
-        tiCopy.setInputLimit(ti.getInputLimit());
+        tiCopy.setNode(tiCopy.getNode());
+        tiCopy.setTraceInfo(ti.getTraceInfo());
+        tiCopy.setClause(copyClause(ti.getClause()));
 
         return tiCopy;
     }
+
+    private static InputSignalClause copyClause(InputSignalClause clause){
+
+        InputSignalClause copy = new InputSignalClause();
+
+        for(Disjunction d : clause.getDisjunctions()){
+            Disjunction dCopy = new Disjunction();
+            for(Literal l : d.getLiterals()){
+                if(l.isNegativeLiteral()){
+                    NegativeLiteral nl = new NegativeLiteral();
+                    nl.setName(l.getName());
+                    dCopy.addLiteral(nl);
+                }else {
+                    PositiveLiteral pl = new PositiveLiteral();
+                    pl.setName(l.getName());
+                    dCopy.addLiteral(pl);
+                }
+            }
+            copy.addDisjunction(dCopy);
+        }
+        return copy;
+    }
 }
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java
index 89f3add41438b5b0b3bdbb640d3b313160e8f332..8827e6c3d92d602e587a183bbf9051de2289622f 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java
@@ -1,10 +1,9 @@
 package de.tudresden.inf.st.pnml.splitter.postprocessing;
 
-import de.tudresden.inf.st.pnml.splitter.constants.SplitterPnmlConstants;
 import de.tudresden.inf.st.pnml.base.constants.PnmlConstants;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
+import de.tudresden.inf.st.pnml.splitter.constants.SplitterPnmlConstants;
 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;
@@ -19,6 +18,7 @@ import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
+
 import java.io.StringWriter;
 import java.util.*;
 
@@ -26,25 +26,32 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
     private static final Logger logger = LoggerFactory.getLogger(GlobalToLocalNetsPostProcessor.class);
 
-    public static List<PetriNet> disconnectNets(PetriNet petriNet) {
+    private final Map<String, List<DinerosPlace>> topicSubscriberPlaces = new HashMap<>();
+    private final Map<String, List<DinerosPlace>> topicPublisherPlaces = new HashMap<>();
+    private final Map<String, List<DinerosPlace>> serviceClientResPlaces = new HashMap<>();
+    private final Map<String, List<DinerosPlace>> serviceClientReqPlaces = new HashMap<>();
+    private final Map<String, DinerosPlace> serviceServerResPlaces = new HashMap<>();
+    private final Map<String, DinerosPlace> serviceServerReqPlaces = new HashMap<>();
+
+    public List<PetriNet> disconnectNets(PetriNet petriNet) {
 
         try {
             // init list of distributed nets
             List<PetriNet> pns = new ArrayList<>();
 
             // cut the topic transitions
-            PetriNet topicCuttedNet = cutTopicTransitions(petriNet);
+            PetriNet topicCutNet = cutTopicTransitions(petriNet);
 
             // cut the service transitions
-            PetriNet serviceCuttedNet = cutServiceTransitions(topicCuttedNet);
+            PetriNet serviceCutNet = cutServiceTransitions(topicCutNet);
 
-            Set<String> locations = getLocations(serviceCuttedNet);
+            Set<String> locations = getNodes(serviceCutNet);
 
             logger.info("##############################################################################################");
-            PostProcessingUtils.printNet(serviceCuttedNet);
+            PostProcessingUtils.printNet(serviceCutNet, true, false);
 
             // serialize for deep copy
-            String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCuttedNet, "-pre-split.pnml");
+            String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCutNet, "-pre-split.pnml");
 
             int netSuffix = 0;
 
@@ -53,7 +60,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
                 List<PetriNet> reParsedPetriNets = PnmlParser.parsePnml(serializedNetPath);
                 for (PetriNet pn : reParsedPetriNets) {
-                    PetriNet separatedNet = createdSeparatedNetByLocation(pn, location);
+                    PetriNet separatedNet = createdSeparatedNetByNode(pn, location);
                     separatedNet.setId(separatedNet.getType() + "-" + netSuffix);
                     pns.add(separatedNet);
                 }
@@ -67,66 +74,63 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
         }
     }
 
-    private static Set<String> getLocations(PetriNet petriNet) {
+    private static Set<String> getNodes(PetriNet petriNet) {
 
         Set<String> allLocations = new HashSet<>();
 
         for (Place place : petriNet.allPlaces()) {
-            if (place.asOutputSignalPlace().getStaticPlaceInformation().getLocation() != null) {
-                allLocations.add(place.asOutputSignalPlace().getStaticPlaceInformation().getLocation());
+            if (place.asDinerosPlace().getStaticPlaceInformation().getNode() != null) {
+                allLocations.add(place.asDinerosPlace().getStaticPlaceInformation().getNode());
             } else {
                 logger.error("Found place without location.");
             }
         }
 
-        for(RefPlace rp : petriNet.allRefPlaces()){
-            if (rp.getLocation() != null) {
-                allLocations.add(rp.getLocation());
+        for (RefPlace rp : petriNet.allRefPlaces()) {
+            if (rp.getNode() != null) {
+                allLocations.add(rp.getNode());
             } else {
-                logger.error("Found reference place without location.");
+                logger.error("Found reference place without node.");
             }
         }
 
         return allLocations;
     }
 
-    private static PetriNet cutServiceTransitions(PetriNet petriNet) {
+    private PetriNet cutServiceTransitions(PetriNet petriNet) {
 
-        Set<Transition> transitionsToAdd = new HashSet<>();
         Set<Transition> transitionsToRemove = new HashSet<>();
-        Map<String, Page> transitionToContainingPageMapping = new HashMap<>();
 
         for (Transition transition : petriNet.allTransitions()) {
 
-            InputSignalTransition ist = transition.asInputSignalTransition();
-
-            int serviceTargetCount = 0;
-            int serviceSourceCount = 0;
-            Set<String> processedRequestTargetSubnets = new HashSet<>();
-            Set<String> processedResponseTargetSubnets = new HashSet<>();
-            Set<String> processedRequestSourceSubnets = new HashSet<>();
-            Set<String> processedResponseSourceSubnets = new HashSet<>();
+            DinerosTransition serviceTransition = transition.asDinerosTransition();
 
-            if (ist.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST)) {
+            if (serviceTransition.getStaticTransitionInformation().isServiceTransitionInformation()) {
+                logger.info("Processing service transition: " + transition.getId());
 
-                // target transitions
-                refactorServiceTransitionTargets(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceTargetCount, processedRequestTargetSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_OUT, "-service-req-target-");
-
-                // source transitions
-                refactorServiceTransitionSources(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceSourceCount, processedRequestSourceSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_IN, "-service-req-source-");
+                String serviceName = serviceTransition.getStaticTransitionInformation()
+                        .asServiceTransitionInformation().getServiceName();
 
+                // Add to the deprecated transitions
                 transitionsToRemove.add(transition);
-            }
-
-            if (ist.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE)) {
 
-                // target transitions
-                refactorServiceTransitionTargets(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceTargetCount, processedResponseTargetSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE_OUT, "-service-res-target-");
+                for (ServiceChannel sc : serviceTransition.getStaticTransitionInformation().
+                        asServiceTransitionInformation().getClientChannelList()) {
 
-                // source transitions
-                refactorServiceTransitionSources(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceSourceCount, processedResponseSourceSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE_IN, "-service-res-source-");
+                    if (!serviceClientResPlaces.containsKey(serviceName)) {
+                        serviceClientResPlaces.put(serviceName, new ArrayList<>());
+                    }
+                    if (!serviceClientReqPlaces.containsKey(serviceName)) {
+                        serviceClientReqPlaces.put(serviceName, new ArrayList<>());
+                    }
+                    serviceClientReqPlaces.get(serviceName).add(petriNet.getPlaceById(sc.getRequestPlaceId()).asDinerosPlace());
+                    serviceClientResPlaces.get(serviceName).add(petriNet.getPlaceById(sc.getResponsePlaceId()).asDinerosPlace());
+                }
 
-                transitionsToRemove.add(transition);
+                serviceServerReqPlaces.put(serviceName, petriNet.getPlaceById(serviceTransition.
+                        getStaticTransitionInformation().asServiceTransitionInformation().getServerChannel().getRequestPlaceId()).asDinerosPlace());
+                serviceServerResPlaces.put(serviceName, petriNet.getPlaceById(serviceTransition.
+                        getStaticTransitionInformation().asServiceTransitionInformation().getServerChannel().getResponsePlaceId()).asDinerosPlace());
             }
         }
 
@@ -135,131 +139,47 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             t.removeSelf();
         }
 
-        for (Transition t : transitionsToAdd) {
-            transitionToContainingPageMapping.get(t.getId()).addObject(t);
-        }
-
         petriNet.flushTreeCache();
-
         return petriNet;
     }
 
-    private static void refactorServiceTransitionSources(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping , Transition transition, InputSignalTransition ist, int serviceCount, Set<String> processedSubnets, String targetType, String sufix) {
-
-        for (Place p : ist.incomingPlaces()) {
+    private PetriNet cutTopicTransitions(PetriNet petriNet) {
 
-            if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-
-                String inLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
-                String inSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
-
-                InputSignalTransition sourceIst = createRosTransition(ist, serviceCount, sufix);
+        Set<Transition> transitionsToRemove = new HashSet<>();
 
-                ServiceTransitionInformation tInfoSource = copyServiceTransitionInformation(ist, inLocation, inSubNet);
+        for (Transition transition : petriNet.allTransitions()) {
 
-                // attributized infos need to be written back to XML
-                JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>();
+            DinerosTransition topicTransition = transition.asDinerosTransition();
 
-                tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT);
-                inputToolInfoJastAddList.add(buildServiceToolSpecifics(targetType, inLocation, inSubNet, tInfoSource.getServiceName(), ist.getStaticInputSignalBindingList()));
+            if (topicTransition.getStaticTransitionInformation().isTopicTransitionInformation()) {
+                logger.info("Processing topic transition: " + transition.getId());
 
-                sourceIst.setToolspecificList(inputToolInfoJastAddList);
-                sourceIst.setMutualTransitionInformation(tInfoSource);
-                reconnectSourceTransitionSignalsAndArcs(transition, ist, p, sourceIst);
+                String topic = topicTransition.getStaticTransitionInformation().asTopicTransitionInformation().getTopic();
 
-                // Add new transitions to net
-                transitionsToAdd.add(sourceIst);
-                transitionToContainingPageMapping.put(sourceIst.getId(), transition.ContainingPage());
+                // Add to the deprecated transitions
+                transitionsToRemove.add(transition);
 
-                serviceCount++;
-                processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
-            } else {
+                for (SubscriberPort subscriberPort : topicTransition.getStaticTransitionInformation()
+                        .asTopicTransitionInformation().getSubscriberPorts()) {
 
-                for (Transition t : transitionsToAdd) {
-                    if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-                        // Get all incoming arcs and connect them to new output transition
-                        for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) {
-                            arc.setTarget(t);
-                        }
+                    Place outPlace = petriNet.getPlaceById(subscriberPort.getPlaceId());
+                    if (!topicSubscriberPlaces.containsKey(topic)) {
+                        topicSubscriberPlaces.put(topic, new ArrayList<>());
                     }
-                }
-            }
-        }
-    }
-
-    private static void refactorServiceTransitionTargets(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping , Transition transition, InputSignalTransition ist, int serviceCount, Set<String> processedSubnets, String targetType, String sufix) {
-
-        for (Place p : ist.outgoingPlaces()) {
-
-            if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-
-                String outLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
-                String outSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
-
-                InputSignalTransition targetIst = createRosTransition(ist, serviceCount, sufix);
-
-                ServiceTransitionInformation tInfoTarget = copyServiceTransitionInformation(ist, outLocation, outSubNet);
 
-                // 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));
-
-                targetIst.setToolspecificList(outputToolInfoJastAddList);
-                targetIst.setMutualTransitionInformation(tInfoTarget);
-
-                // Gel all outgoing arcs and connect them to new input transition
-              //  for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) {
-                for(Arc arc : ist.asInputSignalTransition().getOutArcList().toArray(new Arc[0])){
-                    if (arc.getSource().getId().equals(transition.getId())) {
-                        arc.setSource(targetIst);
-                    }
+                    topicSubscriberPlaces.get(topic).add(outPlace.asDinerosPlace());
                 }
 
-                // Add new transitions to net
-                transitionsToAdd.add(targetIst);
-                transitionToContainingPageMapping.put(targetIst.getId(), transition.ContainingPage());
+                for (PublisherPort publisherPort : topicTransition.getStaticTransitionInformation()
+                        .asTopicTransitionInformation().getPublisherPorts()) {
 
-                serviceCount++;
-                processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
-            } else {
-                for (Transition t : transitionsToAdd) {
-                    if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-                        // Get all incoming arcs and connect them to new output transition
-                        for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) {
-                            arc.setSource(t);
-                        }
+                    Place inPlace = petriNet.getPlaceById(publisherPort.getPlaceId());
+                    if (!topicPublisherPlaces.containsKey(topic)) {
+                        topicPublisherPlaces.put(topic, new ArrayList<>());
                     }
-                }
-            }
-        }
-    }
-
-    private static PetriNet cutTopicTransitions(PetriNet petriNet) {
-
-        Set<Transition> transitionsToAdd = new HashSet<>();
-        Set<Transition> transitionsToRemove = new HashSet<>();
-        Map<String, Page> transitionToContainingPageMapping = new HashMap<>();
-
-        for (Transition transition : petriNet.allTransitions()) {
-
-            InputSignalTransition channelIst = transition.asInputSignalTransition();
-
-            if (channelIst.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
-
-                logger.info("Found topic transition: " + transition.getId());
 
-                // TODO: handle refs & multi pages?
-
-                // Add to the deprecated transitions
-                transitionsToRemove.add(transition);
-
-                // Create and integrate new publisher transitions
-                refactorPublisherSide(transitionsToAdd, transitionToContainingPageMapping, transition, channelIst);
-
-                // Create and integrate new subscriber transitions
-                refactorSubscriberSide(transitionsToAdd, transitionToContainingPageMapping, transition, channelIst);
+                    topicPublisherPlaces.get(topic).add(inPlace.asDinerosPlace());
+                }
             }
         }
 
@@ -268,141 +188,12 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             t.removeSelf();
         }
 
-        for (Transition t : transitionsToAdd) {
-            transitionToContainingPageMapping.get(t.getId()).addObject(t);
-        }
-
-        //petriNet.flushAttrAndCollectionCache();
         petriNet.flushTreeCache();
 
         return petriNet;
     }
 
-    private static void refactorSubscriberSide(Set<Transition> transitionsToAdd,  Map<String, Page> transitionToContainingPageMapping, Transition transition, InputSignalTransition channelIst) {
-
-        int subscriberCount = 0;
-        Set<String> processedSubnets = new HashSet<>();
-
-        for (Place p : channelIst.outgoingPlaces()) {
-
-            if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-
-                String outLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
-                String outSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
-
-                InputSignalTransition subscriberIst = createRosTransition(channelIst, subscriberCount, "-subscriber-");
-
-                TopicTransitionInformation tInfoTarget = new TopicTransitionInformation();
-                tInfoTarget.setSubNet(outSubNet);
-                tInfoTarget.setLocation(outLocation);
-                tInfoTarget.setTopic(channelIst.getStaticTransitionInformation().asTopicTransitionInformation().getTopic());
-
-                // attributized infos need to be written back to XML
-                JastAddList<ToolInfo> outputToolInfoJastAddList = new JastAddList<>();
-
-                if (channelIst.getStaticTransitionInformation().getOutputLimit() >= 0) {
-                    tInfoTarget.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_IN);
-                    outputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_IN, outLocation, outSubNet, tInfoTarget.getTopic(),
-                            channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), null));
-                } else {
-                    tInfoTarget.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN);
-                    outputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN, outLocation, outSubNet, tInfoTarget.getTopic(),
-                            channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), null));
-                }
-
-                subscriberIst.setToolspecificList(outputToolInfoJastAddList);
-                subscriberIst.setMutualTransitionInformation(tInfoTarget);
-
-                // Gel all outgoing arcs and connect them to new input transition
-              //  for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) {
-                for(Arc arc : channelIst.asInputSignalTransition().getOutArcList().toArray(new Arc[0])){
-                    if (arc.getSource().getId().equals(transition.getId())) {
-                        arc.setSource(subscriberIst);
-                    }
-                }
-
-                // Add new transitions to net
-                transitionsToAdd.add(subscriberIst);
-                transitionToContainingPageMapping.put(subscriberIst.getId(), transition.ContainingPage());
-
-                subscriberCount++;
-                processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
-            } else {
-
-                for (Transition t : transitionsToAdd) {
-                    if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-                        // Get all incoming arcs and connect them to new output transition
-                        for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) {
-                            arc.setSource(t);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    private static void refactorPublisherSide(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping, Transition transition, InputSignalTransition channelIst) {
-
-        int publisherCount = 0;
-        Set<String> processedSubnets = new HashSet<>();
-
-        for (Place p : channelIst.incomingPlaces()) {
-
-            if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-
-                String inLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation();
-                String inSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet();
-
-                InputSignalTransition publisherIst = createRosTransition(channelIst, publisherCount, "-publisher-");
-
-                TopicTransitionInformation tInfoSource = new TopicTransitionInformation();
-                tInfoSource.setSubNet(inSubNet);
-                tInfoSource.setLocation(inLocation);
-                tInfoSource.setTopic(channelIst.getStaticTransitionInformation().asTopicTransitionInformation().getTopic());
-
-                // attributized infos need to be written back to XML
-                JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>();
-
-                if (channelIst.getStaticTransitionInformation().getInputLimit() >= 0) {
-
-                    tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT);
-                    inputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT, inLocation, inSubNet, tInfoSource.getTopic(),
-                            channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), channelIst.getStaticInputSignalBindingList()));
-
-                } else {
-                    tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT);
-                    inputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT, inLocation, inSubNet, tInfoSource.getTopic(),
-                            channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), channelIst.getStaticInputSignalBindingList()));
-                }
-
-                publisherIst.setToolspecificList(inputToolInfoJastAddList);
-                publisherIst.setMutualTransitionInformation(tInfoSource);
-
-                // Reconnect Input Signals
-                reconnectSourceTransitionSignalsAndArcs(transition, channelIst, p, publisherIst);
-
-                // Add new transitions to net
-                transitionsToAdd.add(publisherIst);
-                transitionToContainingPageMapping.put(publisherIst.getId(), transition.ContainingPage());
-
-                publisherCount++;
-                processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
-            } else {
-                for (Transition t : transitionsToAdd) {
-                    if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) {
-                        // Get all incoming arcs and connect them to new output transition
-                        for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) {
-                            arc.setTarget(t);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    private static PetriNet createdSeparatedNetByLocation(PetriNet petriNet, String location) {
-
-        logger.info(">>> REMOVING ELEMENTS WITHOUT: " + location + " <<<");
+    private static PetriNet createdSeparatedNetByNode(PetriNet petriNet, String node) {
 
         Set<String> removedTransitionIds = new HashSet<>();
         Set<String> removedPlaceIds = new HashSet<>();
@@ -410,25 +201,25 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
         Set<String> removeRefPlaceIds = new HashSet<>();
 
         for (Place place : petriNet.allPlaces()) {
-            if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) {
+            if (!place.asDinerosPlace().getStaticPlaceInformation().getNode().equals(node)) {
                 removedPlaceIds.add(place.getId());
             }
         }
 
         for (Transition transition : petriNet.allTransitions()) {
-            if (!transition.asInputSignalTransition().getStaticTransitionInformation().getLocation().equals(location)) {
+            if (!transition.asDinerosTransition().getStaticTransitionInformation().getNode().equals(node)) {
                 removedTransitionIds.add(transition.getId());
             }
         }
 
         for (RefPlace place : petriNet.allRefPlaces()) {
-            if (!place.getLocation().equals(location)) {
+            if (!place.getNode().equals(node)) {
                 removeRefPlaceIds.add(place.getId());
             }
         }
 
         for (RefTransition transition : petriNet.allRefTransitions()) {
-            if (!transition.getLocation().equals(location)) {
+            if (!transition.getNode().equals(node)) {
                 removedRefTransitionIds.add(transition.getId());
             }
         }
@@ -444,21 +235,21 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
         }
 
         for (Place place : petriNet.allPlaces()) {
-            if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) {
+            if (!place.asDinerosPlace().getStaticPlaceInformation().getNode().equals(node)) {
                 logger.info("REMOVING PLACE " + place.getId() + " from net");
                 place.removeSelf();
             }
         }
 
         for (RefPlace place : petriNet.allRefPlaces()) {
-            if (!place.getLocation().equals(location)) {
+            if (!place.getNode().equals(node)) {
                 logger.info("REMOVING REF PLACE " + place.getId() + " from net");
                 place.removeSelf();
             }
         }
 
         for (RefTransition transition : petriNet.allRefTransitions()) {
-            if (!transition.getLocation().equals(location)) {
+            if (!transition.getNode().equals(node)) {
                 logger.info("REMOVING REF TRANSITION " + transition.getId() + " from net");
                 transition.removeSelf();
             }
@@ -466,20 +257,20 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
         for (Transition transition : petriNet.allTransitions()) {
 
-            if (!transition.asInputSignalTransition().getStaticTransitionInformation().getLocation().equals(location)) {
+            if (!transition.asDinerosTransition().getStaticTransitionInformation().getNode().equals(node)) {
                 logger.info("REMOVING TRANSITION " + transition.getId() + " from net");
                 transition.removeSelf();
             }
 
-            if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){
-                if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getLocation().equals(location)) {
+            if (transition.asDinerosTransition().getStaticTransitionInformation().isTopicTransitionInformation()) {
+                if (!transition.asDinerosTransition().getStaticTransitionInformation().asTopicTransitionInformation().getNode().equals(node)) {
                     logger.info("REMOVING OLD TOPIC TRANSITION " + transition.getId() + " from net");
                     transition.removeSelf();
                 }
             }
 
-            if(transition.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()){
-                if (!transition.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getLocation().equals(location)) {
+            if (transition.asDinerosTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
+                if (!transition.asDinerosTransition().getStaticTransitionInformation().asServiceTransitionInformation().getNode().equals(node)) {
                     logger.info("REMOVING OLD SERVICE TRANSITION " + transition.getId() + " from net");
                     transition.removeSelf();
                 }
@@ -492,15 +283,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
         return petriNet;
     }
 
-    private static ToolInfo buildTopicToolSpecifics(String type, String location, String subnet, String topic, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) {
-        return buildToolSpecificsInternal(type, location, subnet, topic, null, inputLimit, outputLimit, inputSignalBindings);
-    }
+    private ToolInfo updateToolSpecificsWithPlaceInfos(ToolInfo oldToolInfo) {
 
-    private static ToolInfo buildServiceToolSpecifics(String type, String location, String subnet, String serviceName, JastAddList<InputSignalBinding> inputSignalBindings) {
-        return buildToolSpecificsInternal(type, location, subnet, null, serviceName, 0, 0, inputSignalBindings);
+        return null;
     }
 
-    private static ToolInfo buildToolSpecificsInternal(String type, String location, String subnet, String topic, String serviceName, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) {
+    private ToolInfo buildToolSpecifics(ToolInfo oldToolInfo) {
+
+        StringBuffer oldXMLContent = oldToolInfo.getFormattedXMLBuffer();
 
         try {
             DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
@@ -512,71 +302,35 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             rootElement.setAttribute(SplitterPnmlConstants.VERSION_KEY, SplitterPnmlConstants.SPLITTER_TOOL_VERSION);
             doc.appendChild(rootElement);
 
-            if (location != null) {
-                Element loc = doc.createElement(PnmlConstants.LOCATION_KEY);
-                loc.appendChild(doc.createTextNode(location));
-                rootElement.appendChild(loc);
-            }
+            Element pubPlaces = doc.createElement("publisherPlaces");
+            Element subPlaces = doc.createElement("publisherPlaces");
 
-            if (type != null) {
-                Element ctype = doc.createElement(PnmlConstants.TYPE_KEY);
-                ctype.appendChild(doc.createTextNode(type));
-                rootElement.appendChild(ctype);
-            }
-
-            if (subnet != null) {
-                Element net = doc.createElement(PnmlConstants.SUBNET_KEY);
-                net.appendChild(doc.createTextNode(subnet));
-                rootElement.appendChild(net);
-            }
-
-            if (topic != null) {
-                Element tc = doc.createElement(PnmlConstants.TOPIC_KEY);
-                tc.appendChild(doc.createTextNode(topic));
-                rootElement.appendChild(tc);
-            }
-
-            if (serviceName != null) {
-                Element tc = doc.createElement(PnmlConstants.SERVICE_NAME);
-                tc.appendChild(doc.createTextNode(serviceName));
-                rootElement.appendChild(tc);
-            }
 
-            if(inputLimit > 0){
-                Element inLimit = doc.createElement(PnmlConstants.INPUT_LIMIT_KEY);
-                inLimit.appendChild(doc.createTextNode(String.valueOf(inputLimit)));
-                rootElement.appendChild(inLimit);
-            }
+            for (Map.Entry<String, List<DinerosPlace>> entry : topicPublisherPlaces.entrySet()) {
 
-            if(outputLimit > 0){
-                Element outLimit = doc.createElement(PnmlConstants.OUTPUT_LIMIT_KEY);
-                outLimit.appendChild(doc.createTextNode(String.valueOf(outputLimit)));
-                rootElement.appendChild(outLimit);
             }
 
-            Element bindings = doc.createElement(PnmlConstants.INPUT_SIGNAL_BINDINGS_KEY);
 
-            if (inputSignalBindings != null) {
-                for (InputSignalBinding isb : inputSignalBindings) {
+          /*  for (InputSignalBinding isb : inputSignalBindings) {
 
-                    Element binding = doc.createElement(PnmlConstants.INPUT_SIGNAL_BINDING_KEY);
+                Element binding = doc.createElement(PnmlConstants.INPUT_SIGNAL_BINDING_KEY);
 
-                    Element transitionID = doc.createElement(PnmlConstants.TRANSITION_ID_KEY);
-                    transitionID.appendChild(doc.createTextNode(isb.getTransitionID()));
-                    binding.appendChild(transitionID);
+                Element transitionID = doc.createElement(PnmlConstants.TRANSITION_ID_KEY);
+                transitionID.appendChild(doc.createTextNode(isb.getTransitionID()));
+                binding.appendChild(transitionID);
 
-                    Element inputsignalID = doc.createElement(PnmlConstants.INPUT_SIGNAL_ID_KEY);
-                    inputsignalID.appendChild(doc.createTextNode(isb.getInputSignalID()));
-                    binding.appendChild(inputsignalID);
+                Element inputsignalID = doc.createElement(PnmlConstants.INPUT_SIGNAL_ID_KEY);
+                inputsignalID.appendChild(doc.createTextNode(isb.getInputSignalID()));
+                binding.appendChild(inputsignalID);
 
-                    Element initialvalue = doc.createElement(PnmlConstants.CURRENT_VALUE_KEY);
-                    initialvalue.appendChild(doc.createTextNode(String.valueOf(isb.getInputSignalValue())));
-                    binding.appendChild(initialvalue);
+                Element initialvalue = doc.createElement(PnmlConstants.CURRENT_VALUE_KEY);
+                initialvalue.appendChild(doc.createTextNode(String.valueOf(isb.getInputSignalValue())));
+                binding.appendChild(initialvalue);
 
-                    bindings.appendChild(binding);
-                }
+                bindings.appendChild(binding);
             }
 
+
             rootElement.appendChild(bindings);
 
             TransformerFactory tf = TransformerFactory.newInstance();
@@ -589,57 +343,12 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             toolInfo.setVersion(SplitterPnmlConstants.SPLITTER_TOOL_VERSION);
             toolInfo.setTool(SplitterPnmlConstants.SPLITTER_TOOL_NAME);
 
-            //System.out.println("ToolInfo: " + toolInfo.getFormattedXMLBuffer().toString());
-
-            return toolInfo;
-        } catch (ParserConfigurationException | TransformerConfigurationException pce) {
+            return toolInfo;*/
+        } catch (ParserConfigurationException pce) {
             pce.printStackTrace();
-        } catch (TransformerException e) {
-            e.printStackTrace();
         }
 
         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 createRosTransition(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
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java
index 64f1f5f12a7cb71b468afbfe3d1fb16004673bfd..3ab3f122e85984c666f91110d83ea9112ed1850a 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java
@@ -22,7 +22,7 @@ public class PostProcessingUtils {
 
     private static Set<Transition> getTransitionsBySubnet(String subNet, PetriNet petriNet) {
 
-        return petriNet.allTransitions().stream().filter(t -> t.asInputSignalTransition()
+        return petriNet.allTransitions().stream().filter(t -> t.asDinerosTransition()
                 .getStaticTransitionInformation().getSubNet().equals(subNet)).collect(Collectors.toSet());
     }
 
@@ -50,7 +50,7 @@ public class PostProcessingUtils {
 
     private static Set<Place> getPlacesBySubnet(String subNet, PetriNet petriNet) {
 
-        return petriNet.allPlaces().stream().filter(t -> t.asOutputSignalPlace()
+        return petriNet.allPlaces().stream().filter(t -> t.asDinerosPlace()
                 .getStaticPlaceInformation().getSubNet().equals(subNet)).collect(Collectors.toSet());
     }
 
@@ -105,12 +105,8 @@ public class PostProcessingUtils {
 
     }
 
-    /**
-     * Updates the mutual instance ids, and (if not already existing creates a nre mutual information, based on the static one.
-     * @param petriNet
-     * @param subNet
-     * @param instanceId
-     */
+
+/*
     public static void setSubNetInstanceId(PetriNet petriNet, String subNet, String instanceId) {
 
         Set<Transition> subNetTransitions = getTransitionsBySubnet(subNet, petriNet);
@@ -157,9 +153,9 @@ public class PostProcessingUtils {
             }
         });
 
-    }
+    }*/
 
-    public static Tuple3<Set<Transition>, Set<Place>, Set<Arc>> copyServiceSubNet(PetriNet petriNet, String subNet, Page parentPage, String instanceId, String templateNetInstanceId) {
+   /* public static Tuple3<Set<Transition>, Set<Place>, Set<Arc>> copyServiceSubNet(PetriNet petriNet, String subNet, Page parentPage, String instanceId, String templateNetInstanceId) {
 
         // new elements
         Set<Transition> transitionsToAdd = new HashSet<>();
@@ -183,7 +179,7 @@ public class PostProcessingUtils {
                 // create deep copies of the transitions
                 for(Transition t: petriNet.allTransitions()){
                     if(t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(iterSubnet)) {
-                        transitionsToAdd.add(CopyPrimitiveElements.copyInputSignalTransition(t.asInputSignalTransition(), instanceId + "-", instanceId));
+                        transitionsToAdd.add(CopyPrimitiveElements.copySignalTransition(t.asDinerosTransition(), instanceId + "-", instanceId));
                     }
                 }
             }
@@ -192,98 +188,98 @@ public class PostProcessingUtils {
 
 
         return new Tuple3<>(transitionsToAdd, placesToAdd, arcsToAdd);
-    }
+    }*/
 
     ///////////////////////////////
     // LOGGING ////////////////////
     ///////////////////////////////
 
-    public static void printNet(PetriNet petriNet) {
+    public static void printNet(PetriNet petriNet, boolean withArcs, boolean withToolSpecifics) {
 
-        logger.info("--------------- STRUCTURE ---------------");
-        logger.info("----------------- PLACES ----------------");
+        System.out.println("--------------- STRUCTURE ---------------");
+        System.out.println("----------------- PLACES ----------------");
 
         for (Place p : petriNet.allPlaces()) {
-           logger.info("Place " + p.asOutputSignalPlace().getName().getText() + " -- " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
+            System.out.println("Place " + p.asDinerosPlace().getId() + " -- " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet());
+            if (p.getInitialMarking() != null) {
+                System.out.println("--- Marking: " + p.getInitialMarking().getText());
+            } else {
+                System.out.println("--- Marking: NULL");
+            }
         }
 
-        logger.info("-------------- TRANSITIONS --------------");
+        System.out.println("-------------- TRANSITIONS --------------");
 
         for (Transition t : petriNet.allTransitions()) {
+            System.out.println("Transition " + t.getId());
+        }
 
-            if (t.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
-                logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
-                        + " location: " + t.asInputSignalTransition().getStaticTransitionInformation().getLocation()
-                        + " service: " + t.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------");
-            } else if(t.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){
-               logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
-                        + " location: " + t.asInputSignalTransition().getStaticTransitionInformation().getLocation()
-                        + " topic: " + t.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------");
-            }else{
-                logger.info("--- Transition: " + t.getId() + " location: " + t.asInputSignalTransition().getStaticTransitionInformation().getLocation());
-            }
-
-            if(t.asInputSignalTransition().getInputSignalClause() != null && t.asInputSignalTransition().getInputSignalClause().getNumChild() > 0){
-                logger.info("------ Clause: " + t.asInputSignalTransition().getInputSignalClause().printExp());
-            }
+        System.out.println("-------------- TRANSITION DETAILS --------------");
 
-            for (Place p : t.asInputSignalTransition().incomingPlaces()) {
+        for (Transition t : petriNet.allTransitions()) {
 
-                logger.info("------ Inputplace:  " + p.getName().getText() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()
-                        + " location: " + p.asOutputSignalPlace().getStaticPlaceInformation().getLocation() + " ---------");
+            if (t.asDinerosTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
+                System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet()
+                        + " service: " + t.asDinerosTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------");
+            } else if (t.asDinerosTransition().getStaticTransitionInformation().isTopicTransitionInformation()) {
+                System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet()
+                        + " topic: " + t.asDinerosTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------");
+            } else {
+                System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + " --- name: " + t.getName().getText());
             }
 
-            for (Place p : t.asInputSignalTransition().outgoingPlaces()) {
+            for (Place p : t.asDinerosTransition().incomingPlaces()) {
 
-                logger.info("------ Outputplace: " + p.getName().getText() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()
-                        + " location: " + p.asOutputSignalPlace().getStaticPlaceInformation().getLocation() + " ---------");
+                System.out.println("------ Inputplace:  " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
             }
-        }
 
-        logger.info("----------------- REF PLACES -----------------");
+            for (Place p : t.asDinerosTransition().outgoingPlaces()) {
 
-        for (RefPlace rp : petriNet.allRefPlaces()){
-            logger.info("--- RefPlace: " + rp.getId());
+                System.out.println("------ Outputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
+            }
         }
 
-        logger.info("----------------- REF TRANSITIONS -----------------");
+        System.out.println("----------------- REF PLACES -----------------");
 
-        for (RefTransition rt : petriNet.allRefTransitions()){
-            logger.info("--- RefTransition: " + rt.getId());
+        for (RefPlace rp : petriNet.allRefPlaces()) {
+            System.out.println("--- RefPlace: " + rp.getId());
         }
 
-        logger.info("----------------- ARCS -----------------");
+        System.out.println("----------------- REF TRANSITIONS -----------------");
 
-        for (Arc a : petriNet.allArcs()) {
-            logger.info("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId());
+        for (RefTransition rt : petriNet.allRefTransitions()) {
+            System.out.println("--- RefTransition: " + rt.getId());
         }
 
-        logger.info("--------------- T SIGNALS (STATIC)---------------");
-
-        for (Transition t : petriNet.allTransitions()) {
-            InputSignalTransition ist = t.asInputSignalTransition();
+        if (withArcs) {
+            System.out.println("----------------- ARCS -----------------");
 
-            if (ist != null && ist.getStaticInputSignalBindingList() != null) {
-                ist.getStaticInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID()));
+            for (Arc a : petriNet.allArcs()) {
+                System.out.println("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId());
             }
         }
 
-        logger.info("--------------- T SIGNALS (MUTUAL)---------------");
+
+        System.out.println("--------------- T SIGNALS (STATIC)---------------");
 
         for (Transition t : petriNet.allTransitions()) {
-            InputSignalTransition ist = t.asInputSignalTransition();
+            DinerosTransition ist = t.asDinerosTransition();
 
-            if (ist != null && ist.getMutualInputSignalBindingList() != null) {
-                ist.getMutualInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID()));
+            if (ist != null && ist.getMutableTransitionInformation() == null) {
+                if(ist.getStaticTransitionInformation().isSignalTransitionInformation()){
+                    System.out.println(ist.getStaticTransitionInformation().asSignalTransitionInformation().getClause().printClause());
+                }
             }
         }
 
-        logger.info("--------------- TOOL SPECIFIC ---------------");
+        if(withToolSpecifics) {
+            System.out.println("--------------- TOOL SPECIFIC ---------------");
 
-        for (Transition t : petriNet.allTransitions()) {
-            InputSignalTransition ist = t.asInputSignalTransition();
-            if(ist != null && ist.getNumToolspecific() > 0) {
-               // logger.info("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString());
+            for (Transition t : petriNet.allTransitions()) {
+                DinerosTransition ist = t.asDinerosTransition();
+                if (ist != null && ist.getNumToolspecific() > 0) {
+                    System.out.println("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString());
+                }
             }
         }
     }