diff --git a/build.gradle b/build.gradle
index 8738e7cfdf0e0dd7f18e32a7d8281dcd7f2381ad..b73c7abacf91fff55ba1157cde011b333bdd6ff0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -23,6 +23,20 @@ buildscript {
     dependencies {
         classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3'
     }
+
+    configurations {
+        classpath {
+            exclude group: 'org.slf4j', module: 'slf4j-api'//, version: '1.7.30'
+        }
+    }
+
+  /*  configurations.all {
+        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
+            if (details.requested.name == 'org.slf4j') {
+                details.useTarget 'org.slf4j:slf4j-api:1.7.+'
+            }
+        }
+    }*/
 }
 
 idea.module.generatedSourceDirs += file('src/gen/java')
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 c31ec6d559c96bae17e3cc730baafae64ae9725d..c3002c59853291bd6067bd906f1303f74d5d6ef6 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
@@ -20,35 +20,32 @@ public class Main {
 
         String inputPath = (args.length > 0) ? args[0] : null;
 
-        if(inputPath == null){
+        if (inputPath == null) {
             logger.error("No model found on given input path.");
             return;
         }
 
-       // List<PetriNet> petriNets = PnmlParser.parsePnml("src/main/nets/jointTestNet1.pnml");
+        // List<PetriNet> petriNets = PnmlParser.parsePnml("pnml-relast-splitter/src/main/nets/serviceTest1.pnml");
         List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
 
         List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>();
-       // petriNets.forEach(pn -> disconnectedPetriNets.add(GlobalToLocalNetsPostProcessor.disconnectNets(pn)));
 
-        for(PetriNet pn : petriNets){
-            PostProcessingUtils.printNet(pn);
-            List<PetriNet>  pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn);
+        for (PetriNet pn : petriNets) {
+            List<PetriNet> pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn);
             disconnectedPetriNets.add(pnl);
-            PostProcessingUtils.printNet(pnl.get(0));
         }
 
-         for(List<PetriNet> petriNetList : disconnectedPetriNets){
-            for(PetriNet petriNet : petriNetList){
+        for (List<PetriNet> petriNetList : disconnectedPetriNets) {
+            for (PetriNet petriNet : petriNetList) {
                 PostProcessingUtils.cleanEmptyPages(petriNet);
                 petriNet.flushTreeCache();
             }
         }
 
-        logger.info("------------------------------------------------------------------------------------");
+        logger.info("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
 
-       for(int i = 0; i < disconnectedPetriNets.size(); i++){
-            for(int j = 0; j < disconnectedPetriNets.get(i).size(); j++){
+        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));
 
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java
index 7bd046c738b6adc1b2b4ca81a020ba5dbde59add..c3ee9d1b43dbb2be3a55b0eb32d5e203cdee870b 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java
@@ -83,16 +83,16 @@ public class PnmlExporter {
         return hasFailed ? null : targetPath;
     }
 
-    private static Set<RefTransitionHLAPI> convertAndIncludeRefTransitions(PetriNet petriNet,  Set<PageHLAPI> convertedPages, Set<TransitionHLAPI> convertedTransitions){
+    private static Set<RefTransitionHLAPI> convertAndIncludeRefTransitions(PetriNet petriNet, Set<PageHLAPI> convertedPages, Set<TransitionHLAPI> convertedTransitions) {
 
         Set<RefTransitionHLAPI> convertedRefTransitions = new HashSet<>();
         TransitionHLAPI rootTransition = null;
 
         // get the root transition to construct reference tree
-        for(RefTransition r: petriNet.allRefTransitions()){
-            if(r.getRef().isTransition()){
-                for(TransitionHLAPI th : convertedTransitions){
-                    if(th.getId().equals(r.getRef().asTransition().getId())){
+        for (RefTransition r : petriNet.allRefTransitions()) {
+            if (r.getRef().isTransition()) {
+                for (TransitionHLAPI th : convertedTransitions) {
+                    if (th.getId().equals(r.getRef().asTransition().getId())) {
                         rootTransition = th;
                         break;
                     }
@@ -102,12 +102,12 @@ public class PnmlExporter {
         }
 
         // construct the first reference level
-        for(RefTransition r: petriNet.allRefTransitions()){
+        for (RefTransition r : petriNet.allRefTransitions()) {
             assert rootTransition != null;
-            if(r.getRef().getId().equals(rootTransition.getId())){
+            if (r.getRef().getId().equals(rootTransition.getId())) {
                 RefTransitionHLAPI rth = PrimitiveElementsConverter.convertRefTransitionToPnmlObject(r, rootTransition, null);
-                for(PageHLAPI pageHLAPI : convertedPages){
-                    if(pageHLAPI.getId().equals(r.ContainingPage().getId())){
+                for (PageHLAPI pageHLAPI : convertedPages) {
+                    if (pageHLAPI.getId().equals(r.ContainingPage().getId())) {
                         assert rth != null;
                         rth.setContainerPageHLAPI(pageHLAPI);
                         break;
@@ -118,12 +118,12 @@ public class PnmlExporter {
         }
 
         // construct the remaining levels
-        for(RefTransition r: petriNet.allRefTransitions()){
-            for(RefTransitionHLAPI convRef: convertedRefTransitions){
-                if(convRef.getId().equals(r.getRef().getId())){
-                    RefTransitionHLAPI convertedTransition = PrimitiveElementsConverter.convertRefTransitionToPnmlObject(r, null,convRef);
-                      for(PageHLAPI pageHLAPI : convertedPages){
-                        if(pageHLAPI.getId().equals(r.ContainingPage().getId())){
+        for (RefTransition r : petriNet.allRefTransitions()) {
+            for (RefTransitionHLAPI convRef : convertedRefTransitions) {
+                if (convRef.getId().equals(r.getRef().getId())) {
+                    RefTransitionHLAPI convertedTransition = PrimitiveElementsConverter.convertRefTransitionToPnmlObject(r, null, convRef);
+                    for (PageHLAPI pageHLAPI : convertedPages) {
+                        if (pageHLAPI.getId().equals(r.ContainingPage().getId())) {
                             assert convertedTransition != null;
                             convertedTransition.setContainerPageHLAPI(pageHLAPI);
                             break;
@@ -136,54 +136,51 @@ public class PnmlExporter {
         return convertedRefTransitions;
     }
 
-   private static Set<RefPlaceHLAPI> convertAndIncludeRefPlaces(PetriNet petriNet,  Set<PageHLAPI> convertedPages, Set<PlaceHLAPI> convertedPlaces){
-
+    private static Set<RefPlaceHLAPI> convertAndIncludeRefPlaces(PetriNet petriNet, Set<PageHLAPI> convertedPages, Set<PlaceHLAPI> convertedPlaces) {
 
         Set<RefPlaceHLAPI> convertedRefPlaces = new HashSet<>();
         PlaceHLAPI rootPlace = null;
 
         // get the root transition to construct reference tree
-        for(RefPlace p: petriNet.allRefPlaces()){
-            if(p.getRef().isPlace()) {
+        for (RefPlace p : petriNet.allRefPlaces()) {
+            if (p.getRef().isPlace()) {
                 for (PlaceHLAPI ph : convertedPlaces) {
                     if (ph.getId().equals(p.getRef().getId())) {
                         rootPlace = ph;
-                        break;
-                    }
-                }
-                break;
-            }
-        }
 
-        // construct the first reference level
-        for(RefPlace p: petriNet.allRefPlaces()){
-            assert rootPlace != null;
-            if(p.getRef().getId().equals(rootPlace.getId())){
-                RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p, rootPlace, null);
-                for(PageHLAPI pageHLAPI : convertedPages){
-                    if(pageHLAPI.getId().equals(p.ContainingPage().getId())){
-                        assert rph != null;
-                        rph.setContainerPageHLAPI(pageHLAPI);
-                        break;
-                    }
-                }
-                convertedRefPlaces.add(rph);
-            }
-        }
+                        // construct the first reference level
+                        for (RefPlace p_one : petriNet.allRefPlaces()) {
+                            assert rootPlace != null;
+                            if (p_one.getRef().getId().equals(rootPlace.getId())) {
+                                RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p_one, rootPlace, null);
+                                for (PageHLAPI pageHLAPI : convertedPages) {
+                                    if (pageHLAPI.getId().equals(p_one.ContainingPage().getId())) {
+                                        assert rph != null;
+                                        rph.setContainerPageHLAPI(pageHLAPI);
+                                        break;
+                                    }
+                                }
+                                convertedRefPlaces.add(rph);
+                            }
+                        }
 
-        // construct the remaining levels
-       for(RefPlace p: petriNet.allRefPlaces()){
-            for(RefPlaceHLAPI convRef: convertedRefPlaces){
-                if(convRef.getId().equals(p.getRef().getId())){
-                    RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p, null,convRef);
-                    for(PageHLAPI pageHLAPI : convertedPages){
-                        if(pageHLAPI.getId().equals(p.ContainingPage().getId())){
-                            assert rph != null;
-                            rph.setContainerPageHLAPI(pageHLAPI);
-                            break;
+                        // construct the remaining levels
+                        for (RefPlace p_tree : petriNet.allRefPlaces()) {
+                            for (RefPlaceHLAPI convRef : convertedRefPlaces) {
+                                if (convRef.getId().equals(p_tree.getRef().getId())) {
+                                    RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p_tree, null, convRef);
+                                    for (PageHLAPI pageHLAPI : convertedPages) {
+                                        if (pageHLAPI.getId().equals(p_tree.ContainingPage().getId())) {
+                                            assert rph != null;
+                                            rph.setContainerPageHLAPI(pageHLAPI);
+                                            break;
+                                        }
+                                    }
+                                    convertedRefPlaces.add(rph);
+                                }
+                            }
                         }
                     }
-                    convertedRefPlaces.add(rph);
                 }
             }
         }
@@ -195,9 +192,9 @@ public class PnmlExporter {
         Set<PlaceHLAPI> convertedPlaces = new HashSet<>();
 
         for (Place p : petriNet.allPlaces()) {
-            PlaceHLAPI convertedPlace =  PrimitiveElementsConverter.convertPlaceToPnmlObject(p.asOutputSignalPlace());
-            for(PageHLAPI pageHLAPI : convertedPages){
-                if(pageHLAPI.getId().equals(p.ContainingPage().getId())){
+            PlaceHLAPI convertedPlace = PrimitiveElementsConverter.convertPlaceToPnmlObject(p.asOutputSignalPlace());
+            for (PageHLAPI pageHLAPI : convertedPages) {
+                if (pageHLAPI.getId().equals(p.ContainingPage().getId())) {
                     assert convertedPlace != null;
                     convertedPlace.setContainerPageHLAPI(pageHLAPI);
                     break;
@@ -212,10 +209,10 @@ public class PnmlExporter {
 
         Set<TransitionHLAPI> convertedTransitions = new HashSet<>();
 
-        for(Transition t: petriNet.allTransitions()){
+        for (Transition t : petriNet.allTransitions()) {
             TransitionHLAPI convertedTransition = PrimitiveElementsConverter.convertTransitionToPnmlObject(t.asInputSignalTransition());
-            for(PageHLAPI pageHLAPI : convertedPages){
-                if(pageHLAPI.getId().equals(t.ContainingPage().getId())){
+            for (PageHLAPI pageHLAPI : convertedPages) {
+                if (pageHLAPI.getId().equals(t.ContainingPage().getId())) {
                     assert convertedTransition != null;
                     convertedTransition.setContainerPageHLAPI(pageHLAPI);
                     break;
@@ -230,52 +227,52 @@ public class PnmlExporter {
                                                        Set<TransitionHLAPI> convertedTransitions, Set<RefTransitionHLAPI> convertedRefTransitions, Set<RefPlaceHLAPI> convertedRefPlaces) {
 
         Set<ArcHLAPI> convertedArcs = new HashSet<>();
-        for(Arc a : petriNet.allArcs()){
+        for (Arc a : petriNet.allArcs()) {
 
             NodeHLAPI source = null;
             NodeHLAPI target = null;
 
-            for(TransitionHLAPI th : convertedTransitions){
-                if(th.getId().equals(a.getSource().getId())){
+            for (TransitionHLAPI th : convertedTransitions) {
+                if (th.getId().equals(a.getSource().getId())) {
                     source = th;
                     break;
                 }
-                if(th.getId().equals(a.getTarget().getId())){
+                if (th.getId().equals(a.getTarget().getId())) {
                     target = th;
                     break;
                 }
             }
 
-            for(PlaceHLAPI ph : convertedPlaces){
-                if(ph.getId().equals(a.getSource().getId())){
+            for (PlaceHLAPI ph : convertedPlaces) {
+                if (ph.getId().equals(a.getSource().getId())) {
                     source = ph;
                     break;
                 }
-                if(ph.getId().equals(a.getTarget().getId())){
+                if (ph.getId().equals(a.getTarget().getId())) {
                     target = ph;
                     break;
                 }
             }
 
             // also include arcs to/from refs
-            if(source == null || target == null){
-                for(RefTransitionHLAPI rth : convertedRefTransitions){
-                    if(rth.getId().equals(a.getSource().getId())){
+            if (source == null || target == null) {
+                for (RefTransitionHLAPI rth : convertedRefTransitions) {
+                    if (rth.getId().equals(a.getSource().getId())) {
                         source = rth;
                         break;
                     }
-                    if(rth.getId().equals(a.getTarget().getId())){
+                    if (rth.getId().equals(a.getTarget().getId())) {
                         target = rth;
                         break;
                     }
                 }
 
-                for(RefPlaceHLAPI rph : convertedRefPlaces){
-                    if(rph.getId().equals(a.getSource().getId())){
+                for (RefPlaceHLAPI rph : convertedRefPlaces) {
+                    if (rph.getId().equals(a.getSource().getId())) {
                         source = rph;
                         break;
                     }
-                    if(rph.getId().equals(a.getTarget().getId())){
+                    if (rph.getId().equals(a.getTarget().getId())) {
                         target = rph;
                         break;
                     }
@@ -286,8 +283,8 @@ public class PnmlExporter {
 
             Page containingPage = a.ContainingPage();
 
-            for(PageHLAPI pageHLAPI : convertedPages){
-                if(pageHLAPI.getId().equals(containingPage.getId())){
+            for (PageHLAPI pageHLAPI : convertedPages) {
+                if (pageHLAPI.getId().equals(containingPage.getId())) {
                     assert convertedArc != null;
                     convertedArc.setContainerPageHLAPI(pageHLAPI);
                     break;
@@ -303,14 +300,14 @@ public class PnmlExporter {
     private static Set<PageHLAPI> buildPageTrees(PetriNet petriNet, PetriNetHLAPI net) {
 
         Set<PageHLAPI> convertedPages = new HashSet<>();
-     //   Set<String> processedPageIds = new HashSet<>();
+        //   Set<String> processedPageIds = new HashSet<>();
 
         List<Page> topLevelPages = getTopLevelPages(petriNet);
         List<Page> nonTopLevelPages = getNonTopLevelPages(petriNet);
 
-        for(Page page : topLevelPages){
+        for (Page page : topLevelPages) {
             convertedPages.add(ComplexElementsConverter.convertTopLevelPageContainerToPnmlObject(page, net));
-        //    processedPageIds.add(page.getId());
+            //    processedPageIds.add(page.getId());
         }
 
         for (Page nonTopLevelPage : nonTopLevelPages) {
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 a06c307335824d06c5a05b0ac287bb8ed3e235a6..f7c986ab964e4f90623fa927f020c4fc5213e9f9 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
@@ -43,7 +43,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             Set<String> locations = getLocations(serviceCuttedNet);
 
             // serialize for deep copy
-            String serializedNetPath = PnmlExporter.serializeToPnmlFile(petriNet, "-pre-split.pnml");
+            String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCuttedNet, "-pre-split.pnml");
 
             // filter deep copy elements by location
             for (String location : locations) {
@@ -74,6 +74,15 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 logger.error("Found place without location.");
             }
         }
+
+        for(RefPlace rp : petriNet.allRefPlaces()){
+            if (rp.getSubNet() != null) {
+                allLocations.add(rp.getSubNet());
+            } else {
+                logger.error("Found reference place without location.");
+            }
+        }
+
         return allLocations;
     }
 
@@ -197,7 +206,8 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 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 : 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);
                     }
@@ -300,8 +310,8 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 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 : 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);
                     }
@@ -374,7 +384,6 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 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
@@ -390,11 +399,13 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
     private static PetriNet createdSeparatedNetByLocation(PetriNet petriNet, String location) {
 
         Set<String> removedTransitionIds = new HashSet<>();
-        Set<String> removePlaceIds = new HashSet<>();
+        Set<String> removedPlaceIds = new HashSet<>();
+        Set<String> removedRefTransitionIds = new HashSet<>();
+        Set<String> removeRefPlaceIds = new HashSet<>();
 
         for (Place place : petriNet.allPlaces()) {
             if (!place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(location)) {
-                removePlaceIds.add(place.getId());
+                removedPlaceIds.add(place.getId());
             }
         }
 
@@ -404,9 +415,23 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             }
         }
 
+        for (RefPlace place : petriNet.allRefPlaces()) {
+            if (!place.getSubNet().equals(location)) {
+                removeRefPlaceIds.add(place.getId());
+            }
+        }
+
+        for (RefTransition transition : petriNet.allRefTransitions()) {
+            if (!transition.getSubNet().equals(location)) {
+                removedRefTransitionIds.add(transition.getId());
+            }
+        }
+
         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())) {
+                    || removedPlaceIds.contains(arc.getSource().getId()) || removedPlaceIds.contains(arc.getTarget().getId())
+                    || removedRefTransitionIds.contains(arc.getSource().getId()) || removedRefTransitionIds.contains(arc.getTarget().getId())
+                    || removeRefPlaceIds.contains(arc.getSource().getId()) || removeRefPlaceIds.contains(arc.getTarget().getId())) {
                 logger.info("removing arc " + arc.getId() + " from net");
                 arc.removeSelf();
             }
@@ -419,6 +444,20 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
             }
         }
 
+        for (RefPlace place : petriNet.allRefPlaces()) {
+            if (!place.getSubNet().equals(location)) {
+                logger.info("removing ref place " + place.getId() + " from net");
+                place.removeSelf();
+            }
+        }
+
+        for (RefTransition transition : petriNet.allRefTransitions()) {
+            if (!transition.getSubNet().equals(location)) {
+                logger.info("removing ref transition " + transition.getId() + " from net");
+                transition.removeSelf();
+            }
+        }
+
         for (Transition transition : petriNet.allTransitions()) {
 
             if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){
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 c1abcfa78483acdc0bc2502051e2099c11a43b3a..cbf79912d15541819aac8862e1cc2f20df30e4c1 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
@@ -237,6 +237,18 @@ public class PostProcessingUtils {
             }
         }
 
+        logger.info("----------------- REF PLACES -----------------");
+
+        for (RefPlace rp : petriNet.allRefPlaces()){
+            logger.info("--- RefPlace: " + rp.getId());
+        }
+
+        logger.info("----------------- REF TRANSITIONS -----------------");
+
+        for (RefTransition rt : petriNet.allRefTransitions()){
+            logger.info("--- RefTransition: " + rt.getId());
+        }
+
         logger.info("----------------- ARCS -----------------");
 
         for (Arc a : petriNet.allArcs()) {
diff --git a/src/main/nets/serviceTest1.pnml b/src/main/nets/serviceTest1.pnml
new file mode 100644
index 0000000000000000000000000000000000000000..3777fde46f590b14f3cf0575141530933ac74a5c
--- /dev/null
+++ b/src/main/nets/serviceTest1.pnml
@@ -0,0 +1,185 @@
+<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml">
+    <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet">
+        <name>
+            <text>topicTest1</text>
+        </name>
+
+        <page id="top">
+
+            <page id="sourcePage">
+                <referencePlace id="rp1" ref="channelInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp1</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+
+                <place id="responsePlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>responsePlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+            </page>
+
+            <page id="channelPage">
+                <place id="channelInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>channelInPlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+                <transition id="requestTransition">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>channel</location>
+                        <subnet>channel</subnet>
+                        <type>serviceTransitionTypeRequest</type>
+                        <serviceName>sampleService</serviceName>
+                    </toolspecific>
+                    <name>
+                        <text>requestTransition</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="285" y="205"/>
+                    </graphics>
+                </transition>
+                <referencePlace id="rp2" ref="responseSourcePlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp2</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+
+                <place id="responseInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>responseInPlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+                <transition id="responseTransition">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>channel</location>
+                        <subnet>channel</subnet>
+                        <type>serviceTransitionTypeResponse</type>
+                        <serviceName>sampleService</serviceName>
+                    </toolspecific>
+                    <name>
+                        <text>responseTransition</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="285" y="205"/>
+                    </graphics>
+                </transition>
+                <referencePlace id="rp4" ref="responsePlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp4</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+
+                <arc id="a1" source="channelInPlace" target="requestTransition">
+                </arc>
+                <arc id="a2" source="requestTransition" target="rp2">
+                </arc>
+                <arc id="a3" source="responseSourcePlace" target="responseTransition">
+                </arc>
+                <arc id="a4" source="responseTransition" target="rp4">
+                </arc>
+            </page>
+
+            <page id="targetPage">
+                <place id="responseSourcePlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>responseSourcePlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+
+                <referencePlace id="rp3" ref="responseInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp3</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+            </page>
+        </page>
+    </net>
+</pnml>
\ No newline at end of file
diff --git a/src/main/nets/topicTest1.pnml b/src/main/nets/topicTest1.pnml
new file mode 100644
index 0000000000000000000000000000000000000000..c8ab79daf5b5dad6e460bff670ba3393429db8bb
--- /dev/null
+++ b/src/main/nets/topicTest1.pnml
@@ -0,0 +1,102 @@
+<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml">
+    <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet">
+        <name>
+            <text>topicTest1</text>
+        </name>
+
+        <page id="top">
+
+            <page id="sourcePage">
+                <referencePlace id="rp1" ref="channelInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp1</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+            </page>
+
+            <page id="channelPage">
+                <place id="channelInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>channelInPlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+                <transition id="channelTransition">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>channel</location>
+                        <subnet>channel</subnet>
+                        <type>topicTransitionType</type>
+                        <topic>sampleTopic</topic>
+                        <inputlimit>10</inputlimit>
+                        <outputlimit>10</outputlimit>
+                    </toolspecific>
+                    <name>
+                        <text>channelTransition</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="285" y="205"/>
+                    </graphics>
+                </transition>
+                <referencePlace id="rp2" ref="outRefPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp2</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+                <arc id="a1" source="channelInPlace" target="channelTransition">
+                </arc>
+                <arc id="a2" source="channelTransition" target="rp2">
+                </arc>
+            </page>
+
+            <page id="targetPage">
+                <place id="outRefPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>outRefPlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+            </page>
+        </page>
+    </net>
+</pnml>
\ No newline at end of file
diff --git a/src/main/nets/topicTest2.pnml b/src/main/nets/topicTest2.pnml
new file mode 100644
index 0000000000000000000000000000000000000000..4043758e31c7c010ac19de6685831695a2151600
--- /dev/null
+++ b/src/main/nets/topicTest2.pnml
@@ -0,0 +1,119 @@
+<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml">
+    <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet">
+        <name>
+            <text>topicTest1</text>
+        </name>
+
+        <page id="top">
+
+            <page id="sourcePage">
+                <referencePlace id="rp1" ref="channelInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp1</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+            </page>
+
+            <page id="channelPage">
+                <place id="channelInPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>channelInPlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+                <place id="channelInPlace2">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc2</location>
+                        <subnet>loc2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>channelInPlace2</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+                <transition id="channelTransition">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>channel</location>
+                        <subnet>channel</subnet>
+                        <type>topicTransitionType</type>
+                        <topic>sampleTopic</topic>
+                        <inputlimit>10</inputlimit>
+                        <outputlimit>10</outputlimit>
+                    </toolspecific>
+                    <name>
+                        <text>channelTransition</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="285" y="205"/>
+                    </graphics>
+                </transition>
+                <referencePlace id="rp2" ref="outRefPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>rp2</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="20" y="20"/>
+                    </graphics>
+                </referencePlace>
+                <arc id="a1" source="channelInPlace" target="channelTransition">
+                </arc>
+                <arc id="a2" source="channelTransition" target="rp2">
+                </arc>
+                <arc id="a3" source="channelInPlace2" target="channelTransition">
+                </arc>
+            </page>
+
+            <page id="targetPage">
+                <place id="outRefPlace">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <location>loc3</location>
+                        <subnet>loc3</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>outRefPlace</text>
+                        <graphics>
+                            <offset x="0" y="-10" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="635" y="90"/>
+                    </graphics>
+                </place>
+            </page>
+        </page>
+    </net>
+</pnml>
\ No newline at end of file