diff --git a/src/main/jastadd/Graphviz.jrag b/src/main/jastadd/Graphviz.jrag
deleted file mode 100644
index 07ca5fcfd74cf449178e5a55b0a77dbed2074be6..0000000000000000000000000000000000000000
--- a/src/main/jastadd/Graphviz.jrag
+++ /dev/null
@@ -1,42 +0,0 @@
-aspect Graphviz {
-  syn String PetriNet.toDot() {
-
-    StringBuffer b = new StringBuffer();
-
-    b.append("digraph \"").append(name()).append("\" {\n")
-        .append("  rankdir=LR;\n")
-        .append("  center=true; margin=1;\n")
-        .append("\n")
-        .append("  subgraph places {\n")
-        .append("    node [shape=circle,fixedsize=true,label=\"\", height=.3,width=.3];\n");
-
-    for (Place place : allPlaces()) {
-      b.append("    ").append(place.dotId()).append(" [");
-      if (place.hasName()) b.append("xlabel=\"").append(place.name()).append("\", ");
-      b.append("label=\"").append("0").append("\"];\n");
-    }
-
-    b.append("  }\n\n");
-
-    b.append("  subgraph transitions {\n")
-        .append("    node [shape=rect,height=0.4,width=.4];\n");
-    for (Transition transition : allTransitions()) {
-      b.append("    ").append(transition.dotId()).append(" [");
-      if (transition.hasName()) b.append("label=\"").append(transition.name()).append("\"");
-      b.append("]\n");
-    }
-
-    b.append("  }\n\n");
-
-    for (Arc arc : allArcs()) {
-      b.append("  ").append(arc.getSource().dotId()).append("->").append(arc.getTarget().dotId()).append(";\n");
-    }
-    b.append("}\n");
-
-    return b.toString();
-  }
-
-  syn String PetriNet.dotId() = "\"" + getId().replaceAll("\"", "\\\"") + "\"";
-  syn String PnObject.dotId() = "\"" + getId().replaceAll("\"", "\\\"") + "\"";
-
-}
diff --git a/src/main/jastadd/distribution/DistributedPN.jadd b/src/main/jastadd/distribution/DistributedPN.jadd
index 08110b5376eb37090d0f6f6b758a15d967f8ec55..68acb5399392d12dabfb478a362ea71b32ca0033 100644
--- a/src/main/jastadd/distribution/DistributedPN.jadd
+++ b/src/main/jastadd/distribution/DistributedPN.jadd
@@ -8,6 +8,14 @@ aspect PnDistribution {
         return de.tudresden.inf.st.pnml.ToolSpecificsParser.getTransitionTypeFromToolSpecifics(this.getToolspecificList());
     }
 
+    syn lazy String Transition.topic(){
+        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getTopic(this.getToolspecificList());
+    }
+
+    syn lazy String Transition.subnetInfo(){
+        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getTransitionSubnetInfo(this.getToolspecificList());
+    }
+
     syn lazy String Place.location() {
         return de.tudresden.inf.st.pnml.ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList());
     }
@@ -16,15 +24,15 @@ aspect PnDistribution {
         return de.tudresden.inf.st.pnml.ToolSpecificsParser.getPlaceTypeFromToolSpecifics(this.getToolspecificList());
     }
 
-    syn lazy Boolean Transition.isLimitedChannelTransition() {
-        return de.tudresden.inf.st.pnml.ToolSpecificsParser.isLimitedChannelTransitionType(this.getToolspecificList());
+    syn lazy String Place.subnetInfo(){
+        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getPlaceSubnetInfo(this.getToolspecificList());
     }
 
-    syn lazy int Transition.channelLimit() {
-        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getLimitedChannelTransitionValue(this.getToolspecificList());
+    syn lazy Integer Transition.inputLimit(){
+        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getTransitionOutputLimit(this.getToolspecificList());
     }
 
-    syn lazy String Transition.getTopic(){
-        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getTopic(this.getToolspecificList());
+    syn lazy Integer Transition.outputLimit(){
+        return de.tudresden.inf.st.pnml.ToolSpecificsParser.getTransitionInputLimit(this.getToolspecificList());
     }
 }
\ No newline at end of file
diff --git a/src/main/jastadd/marking/Execution.jadd b/src/main/jastadd/marking/Execution.jadd
deleted file mode 100644
index e6bda62525b76b1f417843802a6ed622ac30ead5..0000000000000000000000000000000000000000
--- a/src/main/jastadd/marking/Execution.jadd
+++ /dev/null
@@ -1,99 +0,0 @@
-import de.tudresden.inf.st.pnml.PnmlConstants;
-
-aspect Execution {
-
-  public boolean Marking.fireInPlace() {
-    return fireInPlace(new Random());
-  }
-
-  public boolean Marking.fireInPlace(java.util.Random random) {
-    return fireInPlace(random, true).isPresent();
-  }
-
-  public Optional<Marking> Marking.fireTransition(Transition transition, boolean requireFlush) {
-
-    if(transition.type().equals(PnmlConstants.TRANSITION_TYPE_DISCRETE)){
-
-        transition.incomingPlaces().forEach(place -> this.resolvePlace(place).setMarking(this.resolvePlace(place).getMarking()-1));
-        transition.outgoingPlaces().forEach(place -> this.resolvePlace(place).setMarking(this.resolvePlace(place).getMarking()+1));
-
-        if (requireFlush) {
-          this.flushTreeCache();
-        }
-
-        return Optional.of(this);
-    }
-    return null;
-  }
-
-  public Optional<Marking> Marking.fireChannelTransitionOutput(Transition transition, boolean requireFlush) {
-
-    if(transition.type().equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_OUT)
-        || transition.type().equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_OUT)){
-
-        transition.incomingPlaces().forEach(place -> this.resolvePlace(place).setMarking(this.resolvePlace(place).getMarking()-1));
-
-        if (requireFlush) {
-          this.flushTreeCache();
-        }
-
-        return Optional.of(this);
-    }
-    return null;
-  }
-
-  public Optional<Marking> Marking.fireChannelTransitionInput(Transition transition, boolean requireFlush) {
-
-     if(transition.type().equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN)
-        || transition.type().equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_IN)){
-
-        transition.outgoingPlaces().forEach(place -> this.resolvePlace(place).setMarking(this.resolvePlace(place).getMarking()+1));
-
-     if (requireFlush) {
-       this.flushTreeCache();
-     }
-
-     return Optional.of(this);
-     }
-  return null;
-  }
-
-  private Optional<Marking> Marking.fireInPlace(java.util.Random random, boolean requireFlush) {
-    if(enabledTransitions().isEmpty()) return Optional.empty();
-
-    // select a random transition
-    Transition transition = enabledTransitions().stream()
-        .sorted((t1, t2) -> t1.getId().compareTo(t2.getId()))
-        .skip(random.nextInt(enabledTransitions().size()))
-        .findFirst().get();
-
-    // take a token from each incoming place
-    transition.incomingPlaces().forEach(place -> this.resolvePlace(place).setMarking(this.resolvePlace(place).getMarking()-1));
-
-    // place a token in each outgoing place
-    transition.outgoingPlaces().forEach(place -> this.resolvePlace(place).setMarking(this.resolvePlace(place).getMarking()+1));
-
-    if (requireFlush) {
-      // flush the entire marking tree
-      this.flushTreeCache();
-    }
-
-    return Optional.of(this);
-  }
-
-  public java.util.Collection<Place> Marking.collectIncomingPlace(Transition transition){
-    return transition.incomingPlaces();
-  }
-
-  public java.util.Collection<Place> Marking.collectOutgoingPlace(Transition transition){
-    return transition.outgoingPlaces();
-  }
-
-  public Optional<Marking> Marking.fire() {
-    return fire(new Random());
-  }
-
-  public Optional<Marking> Marking.fire(java.util.Random random) {
-    return treeCopyNoTransform().fireInPlace(random, false);
-  }
-}
diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java
index 956ffaa8191504651e31b32e462c1bca07102d86..c5bb3e52e7948e69de66b756e1c9b2e4829dde06 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java
@@ -5,14 +5,7 @@ public final class PnmlConstants {
     public static final String TRANSITION_TYPE_DISCRETE = "discreteTransitionType";
     public static final String TRANSITION_TYPE_CONTINUOUS = "continuousTransitionType";
 
-    public static final String TRANSITION_TYPE_CHANNEL_AC = "acChannelTransitionType";
-    public static final String TRANSITION_TYPE_CHANNEL_NOT_AC = "notAcChannelTransitionType";
-    public static final String TRANSITION_TYPE_CHANNEL_ACK_AC = "ackAcChannelTransitionType";
-    public static final String TRANSITION_TYPE_CHANNEL_LIMITED_IN = "limitedChannelInType";
-    public static final String TRANSITION_TYPE_CHANNEL_UNLIMITED_IN = "unlimitedChannelInType";
-
-    public static final String TRANSITION_TYPE_CHANNEL_LIMITED_OUT = "limitedChannelOutType";
-    public static final String TRANSITION_TYPE_CHANNEL_UNLIMITED_OUT = "unlimitedChannelOutType";
+    public static final String TRANSITION_TYPE_TOPIC = "topicTransitionType";
 
     public static final String PLACE_TYPE_DISCRETE = "discretePlaceType";
     public static final String PLACE_TYPE_CONTINUOUS = "continuousPlaceType";
diff --git a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java b/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
index 3979a5928fdc47c4ad3b5819349c5c16dc20467a..8219bd70c8ea61f6cf975e17ec4fd39c99368319 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
@@ -49,11 +49,7 @@ public class ToolSpecificsParser {
 
                 if (typeList.getLength() > 0 && typeList.item(0) != null) {
                     String type = typeList.item(0).getTextContent();
-                    if (type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_AC) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_ACK_AC) ||
-                            type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_NOT_AC) || !type.equals(PnmlConstants.TRANSITION_TYPE_CONTINUOUS)
-                            || type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN)
-                            || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_IN)|| type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_OUT)
-                            || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_OUT)) {
+                    if (!type.equals(PnmlConstants.TRANSITION_TYPE_CONTINUOUS) || type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE) || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
                         return type;
                     } else {
                         logger.error("Error: Invalid transition type configured.");
@@ -92,29 +88,6 @@ public class ToolSpecificsParser {
         return "";
     }
 
-    public static Boolean isLimitedChannelTransitionType(JastAddList<ToolInfo> toolInfos) {
-
-        if (toolInfos.getNumChild() > 0) {
-            try {
-                Document doc = parseToolSpecifics(toolInfos);
-                NodeList typeList = doc.getElementsByTagName(PnmlConstants.TYPE_KEY);
-
-                if (typeList.getLength() > 0 && typeList.item(0) != null) {
-                    String type = typeList.item(0).getTextContent();
-                    if ( type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_IN)
-                            || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_OUT) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_OUT)) {
-                        return true;
-                    } else {
-                        return false;
-                    }
-                }
-            } catch (ParserConfigurationException | SAXException | IOException e) {
-                logger.error(e.getMessage());
-            }
-        }
-        return false;
-    }
-
     public static String getTopic(JastAddList<ToolInfo> toolInfos) {
 
         if (toolInfos.getNumChild() > 0) {
@@ -128,8 +101,7 @@ public class ToolSpecificsParser {
 
                     String type = typeList.item(0).getTextContent();
 
-                    if ( type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_IN)
-                            || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_OUT) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_UNLIMITED_OUT)) {
+                    if (type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
                         return topicList.item(0).getTextContent();
                     }
                 }
@@ -142,28 +114,20 @@ public class ToolSpecificsParser {
         return null;
     }
 
-    public static int getLimitedChannelTransitionValue(JastAddList<ToolInfo> toolInfos) {
+    public static String getTransitionSubnetInfo(JastAddList<ToolInfo> toolInfos){
+        return "";
+    }
+
+    public static String getPlaceSubnetInfo(JastAddList<ToolInfo> toolInfos){
+        return "";
+    }
 
-        if (toolInfos.getNumChild() > 0) {
-            try {
-                Document doc = parseToolSpecifics(toolInfos);
-                NodeList typeList = doc.getElementsByTagName(PnmlConstants.TYPE_KEY);
+    public static int getTransitionOutputLimit(JastAddList<ToolInfo> toolInfos) {
+        return 0;
+    }
 
-                if (typeList.getLength() > 0 && typeList.item(0) != null) {
-                    String type = typeList.item(0).getTextContent();
-                    if (type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN) || type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN)
-                            ||type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN) ||type.equals(PnmlConstants.TRANSITION_TYPE_CHANNEL_LIMITED_IN)) {
-                        NodeList boundList = doc.getElementsByTagName(PnmlConstants.LIMIT_KEY);
-                        return Integer.valueOf(boundList.item(0).getTextContent());
-                    } else {
-                        return -1;
-                    }
-                }
-            } catch (ParserConfigurationException | SAXException | IOException e) {
-                logger.error(e.getMessage());
-            }
-        }
-        return -1;
+    public static int getTransitionInputLimit(JastAddList<ToolInfo> toolInfos) {
+        return 0;
     }
 
     private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException {
diff --git a/src/main/resources/minimal_global.pnml b/src/main/resources/minimal_global.pnml
new file mode 100644
index 0000000000000000000000000000000000000000..c6f66792af382d3d536886ef3bfa5462e7106ffe
--- /dev/null
+++ b/src/main/resources/minimal_global.pnml
@@ -0,0 +1,125 @@
+<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>minimal</text>
+        </name>
+        <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1">
+        </toolspecific>
+        <page id="g-E2D0-BCF68-1">
+            <place id="p1">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1">
+                    <location>node-1</location>
+                    <subnet>subnet-1</subnet>
+                    <type>discretePlaceType</type>
+                    <outputsignalbindings>
+                        <outputsignalbinding>
+                            <placeID>p1</placeID>
+                            <outputsignalID>os2</outputsignalID>
+                            <initialvalue>1</initialvalue> <!-- -1 = undefined -->
+                            <outputmappings>
+                                <equal>
+                                    <value>1</value>
+                                    <result>3</result>
+                                </equal>
+                                <equal>
+                                    <value>0</value>
+                                    <result>2</result>
+                                </equal>
+                                <threshold>
+                                    <value>6</value>
+                                    <result>0</result>
+                                </threshold>
+                                <range>
+                                    <upperbound>5</upperbound>
+                                    <lowerbound>3</lowerbound>
+                                    <result>1</result>
+                                </range>
+                            </outputmappings>
+                        </outputsignalbinding>
+                    </outputsignalbindings>
+                </toolspecific>
+                <name>
+                    <text>p1</text>
+                    <graphics>
+                        <offset x="0" y="-10" />
+                    </graphics>
+                </name>
+                <initialMarking>
+                    <text>1</text>
+                </initialMarking>
+                <graphics>
+                    <position x="30" y="50"/>
+                </graphics>
+            </place>
+            <place id="p2">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1">
+                    <location>node-1</location>
+                    <subnet>subnet-1</subnet>
+                    <type>discretePlaceType</type>
+                    <outputsignalbindings>
+                        <outputsignalbinding>
+                            <placeID>p2</placeID>
+                            <outputsignalID>os1</outputsignalID>
+                            <initialvalue>4</initialvalue> <!-- -1 = undefined -->
+                            <outputmappings>
+                                <equal>
+                                    <value>1</value>
+                                    <result>1</result>
+                                </equal>
+                                <threshold>
+                                    <value>6</value>
+                                    <result>0</result>
+                                </threshold>
+                                <range>
+                                    <upperbound>5</upperbound>
+                                    <lowerbound>3</lowerbound>
+                                    <result>1</result>
+                                </range>
+                            </outputmappings>
+                        </outputsignalbinding>
+                    </outputsignalbindings>
+                </toolspecific>
+                <name>
+                    <text>p2</text>
+                    <graphics>
+                        <offset x="0" y="-10" />
+                    </graphics>
+                </name>
+                <initialMarking>
+                    <text>1</text>
+                </initialMarking>
+                <graphics>
+                    <position x="635" y="90"/>
+                </graphics>
+            </place>
+            <transition id="t1">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1">
+                    <location>node-1</location>
+                    <type>topicTransitionType</type>
+                    <inputlimit>10</inputlimit>
+                    <outputlimit>10</outputlimit>
+                    <inputsignalbindings>
+                        <inputsignalbinding>
+                            <transitionID>t1</transitionID>
+                            <inputsignalID>is1</inputsignalID>
+                            <initialvalue>1</initialvalue>
+                        </inputsignalbinding>
+                    </inputsignalbindings>
+                </toolspecific>
+                <name>
+                    <text>t1</text>
+                    <graphics>
+                        <offset x="0" y="0" />
+                    </graphics>
+                </name>
+                <graphics>
+                    <position x="300" y="50"/>
+                </graphics>
+            </transition>
+            <arc id="arc-t2-p1" source="p1" target="t1">
+            </arc>
+            <arc id="arc-p2-t2" source="t1" target="p2">
+            </arc>
+        </page>
+    </net>
+</pnml>
\ No newline at end of file