diff --git a/src/main/jastadd/base/clauses/expressions.jadd b/src/main/jastadd/base/clauses/expressions.jadd
index 0f1967fca191b3c50ec569d7b5240f933737e799..a5bba722a443aafd95d7c63eec14dea3c6c911d0 100644
--- a/src/main/jastadd/base/clauses/expressions.jadd
+++ b/src/main/jastadd/base/clauses/expressions.jadd
@@ -21,19 +21,18 @@ aspect SignalExpressions {
             for(Disjunction dj : getDisjunctionList()){
 
                 int i = 0;
+                result += "(";
                 for(Literal l : dj.getLiteralList()){
-                    result += "(";
-                    if(i < dj.getNumLiteral()){
+                    if(i < dj.getNumLiteral() - 1){
                         result += l.printClause() + " OR ";
                     } else {
                         result += l.printClause();
                     }
-
-                    result += ")";
                     i++;
                 }
+                result += ")";
 
-                if(j < getNumDisjunction()){
+                if(j < getNumDisjunction() - 1){
                     result += " AND ";
                 }
                 j++;
diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd
index ec3670335a08eea549c5b6114ba0bd72f814cb4c..a47045c60f261b5ee9049fa00312a49da0046248 100644
--- a/src/main/jastadd/base/distribution/DistributedPN.jadd
+++ b/src/main/jastadd/base/distribution/DistributedPN.jadd
@@ -39,8 +39,8 @@ aspect PnDistribution {
         return ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList());
     }
 
-    syn lazy InputSignalClause DinerosTransition.getInputSignalClause(){
-        return ToolSpecificsParser.getClauseFromToolSpecifics(this.getToolspecificList());
+    syn lazy InputSignalClause DefaultTransitionInformation.getInputSignalClause(){
+        return ToolSpecificsParser.getClauseFromToolSpecifics(this.containingTransition().getToolspecificList());
     }
 
     syn lazy CommunicatorInformation PetriNet.getCommunicatorInformation(){
diff --git a/src/main/jastadd/base/io/IoPN.jadd b/src/main/jastadd/base/io/IoPN.jadd
index eee4bfee05904a089c622c1ac2e371a8437efa7d..fd198879b7f5c00d39a510fe1b5cd5eb2dd11c78 100644
--- a/src/main/jastadd/base/io/IoPN.jadd
+++ b/src/main/jastadd/base/io/IoPN.jadd
@@ -3,4 +3,11 @@ aspect IoPnExtension{
         inh Marking DinerosPlace.marking();
         eq PetriNetDoc.getChild().marking() = null;
         eq Marking.getPetriNet().marking() = this;
+
+        inh DinerosTransition TransitionInformation.containingTransition();
+        eq DinerosTransition.getChild().containingTransition() = this;
+
+        syn lazy JastAddList<InputSignalBinding> DefaultTransitionInformation.getInputSignalBinding() {
+            return PnmlSignalParser.parseInputSignalBindingDefinitions(this.containingTransition().getToolspecificList());
+        }
 }
diff --git a/src/main/jastadd/base/io/IoPN.relast b/src/main/jastadd/base/io/IoPN.relast
index 9587cc3cf7d5d9b9e33863fa2ea314e296e2da53..dfaa8d28235f6eb6a8683c06f04240c84a6c9b6e 100644
--- a/src/main/jastadd/base/io/IoPN.relast
+++ b/src/main/jastadd/base/io/IoPN.relast
@@ -11,12 +11,12 @@ ServiceChannel : Port ::= <RequestPort:String> <ResponsePort:String>;
 
 // Transition Information
 InputSignalBinding ::= <InputSignalId:String>;
-abstract TransitionInformation : PnObjectInformation ::= <Type:String> InputSignal:InputSignalBinding*;
+abstract TransitionInformation : PnObjectInformation ::= <Type:String>;
 TopicTransitionInformation : TransitionInformation ::= <Topic:String> SubscriberPort:SubscriberPort* PublisherPort:PublisherPort*;
 ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String> <ServerInput:String> <ServerOutput:String> ServiceChannel:ServiceChannel*;
-DefaultTransitionInformation : TransitionInformation;
+DefaultTransitionInformation : TransitionInformation ::= InputSignal:InputSignalBinding* /Clause:InputSignalClause/; /* only normal transition have signals attached */
 
 // Elements
-DinerosTransition : Transition ::= /StaticTransitionInformation:TransitionInformation/ [MutableTransitionInformation:TransitionInformation] /Clause:InputSignalClause/;
+DinerosTransition : Transition ::= /StaticTransitionInformation:TransitionInformation/ [MutableTransitionInformation:TransitionInformation];
 DinerosPlace : Place ::= /StaticPlaceInformation:PlaceInformation/ [MutablePlaceInformation:PlaceInformation];
 
diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
index 931d161549602888e1aba13fd46a69cdbce23503..7ecb26fda5370a2bada1e20d685d11b3a0fcd0ed 100644
--- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
+++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
@@ -190,8 +190,8 @@ aspect ToolSpecificsParser{
 
                     if (typeList.getLength() > 0 && typeList.item(0) != null) {
                         String type = typeList.item(0).getTextContent();
-                        if (!type.equals(PnmlConstants.TRANSITION_TYPE_SERVICE) || type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE)
-                                || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
+                        if (!type.equals(PnmlConstants.TRANSITION_TYPE_SERVICE) || !type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE)
+                                || !type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
                             return type;
                         } else {
                             logger.error("Error: Invalid transition type configured: " + type + ".");
diff --git a/src/main/java/de/tudresden/inf/st/pnml/base/Main.java b/src/main/java/de/tudresden/inf/st/pnml/base/Main.java
index d643589b5e80a572d31eb0378fb22184e7b2468e..fb6a46642c66ef4b47c893d214d8fa635b9d2d16 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/base/Main.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/base/Main.java
@@ -1,16 +1,101 @@
 package de.tudresden.inf.st.pnml.base;
 
-import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
-import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
-
-import java.util.List;
-
 public class Main {
 
     public static void main(String[] args) {
 
         // Nothing to do here
-
-        List<PetriNet> petriNets = PnmlParser.parsePnml("/src/main/resources/nets/TestNet1.pnml");
+        // List<PetriNet> petriNets = PnmlParser.parsePnml("...");
+        // printNet(petriNets.get(0), false, false);
     }
+
+    /*public static void printNet(PetriNet petriNet, boolean withArcs, boolean withToolSpecifics) {
+
+        System.out.println("--------------- STRUCTURE ---------------");
+        System.out.println("----------------- PLACES ----------------");
+
+        for (Place p : petriNet.allPlaces()) {
+            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");
+            }
+        }
+
+        System.out.println("-------------- TRANSITIONS --------------");
+
+        for (Transition t : petriNet.allTransitions()) {
+            System.out.println("Transition " + t.getId());
+        }
+
+        System.out.println("-------------- TRANSITION DETAILS --------------");
+
+        for (Transition t : petriNet.allTransitions()) {
+
+            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.asDinerosTransition().incomingPlaces()) {
+
+                System.out.println("------ Inputplace:  " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
+            }
+
+            for (Place p : t.asDinerosTransition().outgoingPlaces()) {
+
+                System.out.println("------ Outputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
+            }
+        }
+
+        System.out.println("----------------- REF PLACES -----------------");
+
+        for (RefPlace rp : petriNet.allRefPlaces()) {
+            System.out.println("--- RefPlace: " + rp.getId());
+        }
+
+        System.out.println("----------------- REF TRANSITIONS -----------------");
+
+        for (RefTransition rt : petriNet.allRefTransitions()) {
+            System.out.println("--- RefTransition: " + rt.getId());
+        }
+
+        if (withArcs) {
+            System.out.println("----------------- ARCS -----------------");
+
+            for (Arc a : petriNet.allArcs()) {
+                System.out.println("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId());
+            }
+        }
+
+
+        System.out.println("--------------- T SIGNALS (STATIC)---------------");
+
+        for (Transition t : petriNet.allTransitions()) {
+            DinerosTransition ist = t.asDinerosTransition();
+
+            if (ist != null && ist.getMutableTransitionInformation() == null) {
+                if(ist.getStaticTransitionInformation().isDefaultTransitionInformation()){
+                    System.out.println(ist.getStaticTransitionInformation().asDefaultTransitionInformation().getInputSignalClause().printClause());
+                }
+            }
+        }
+
+        if(withToolSpecifics) {
+            System.out.println("--------------- TOOL SPECIFIC ---------------");
+
+            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());
+                }
+            }
+        }
+    }*/
 }
diff --git a/src/main/resources/nets/TestNet2.pnml b/src/main/resources/nets/TestNet2.pnml
new file mode 100644
index 0000000000000000000000000000000000000000..995cf0334da084faa950a775a9ec4f2c82db591e
--- /dev/null
+++ b/src/main/resources/nets/TestNet2.pnml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>ServiceNet</text>
+        </name>
+        <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+            <communicators>
+                <communicator>
+                    <cType>serviceClient</cType>
+                    <cSubnet>s1</cSubnet>
+                </communicator>
+                <communicator>
+                    <cType>serviceServer</cType>
+                    <cSubnet>s2</cSubnet>
+                </communicator>
+            </communicators>
+        </toolspecific>
+        <page id="top">
+            <page id="sourcePage">
+                <place id="req1">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <node>n1</node>
+                        <subnet>s1</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>req1</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="0" y="0" />
+                    </graphics>
+                </place>
+                <place id="res1">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <node>n1</node>
+                        <subnet>s1</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>res1</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="0" y="0" />
+                    </graphics>
+                </place>
+            </page>
+            <transition id="serviceTransition">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                    <type>serviceTransitionType</type>
+                    <serviceName>sampleService</serviceName>
+                    <serverInput>serverIn</serverInput>
+                    <serverOutput>serverOut</serverOutput>
+                    <channels>
+                        <channel>
+                            <request>req1</request>
+                            <response>res1</response>
+                        </channel>
+                    </channels>
+                </toolspecific>
+                <name>
+                    <text>serviceTransition</text>
+                    <graphics>
+                        <offset x="0" y="0" />
+                    </graphics>
+                </name>
+                <graphics>
+                    <position x="0" y="0" />
+                </graphics>
+            </transition>
+            <page id="targetPage">
+                <place id="serverIn">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <node>n2</node>
+                        <subnet>s2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>serverIn</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="0" y="0" />
+                    </graphics>
+                </place>
+                <place id="serverOut">
+                    <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                        <node>n2</node>
+                        <subnet>s2</subnet>
+                    </toolspecific>
+                    <name>
+                        <text>serverOut</text>
+                        <graphics>
+                            <offset x="0" y="0" />
+                        </graphics>
+                    </name>
+                    <graphics>
+                        <position x="0" y="0" />
+                    </graphics>
+                </place>
+            </page>
+        </page>
+    </net>
+</pnml>
\ No newline at end of file
diff --git a/src/main/resources/nets/TestNet3.pnml b/src/main/resources/nets/TestNet3.pnml
new file mode 100644
index 0000000000000000000000000000000000000000..d1a7cc9fa4acfe3b1163705a8f2cee9ba21bd537
--- /dev/null
+++ b/src/main/resources/nets/TestNet3.pnml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>SignalNet</text>
+        </name>
+        <!-- read via attribute -->
+        <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+            <inputsignals>
+                <inputsignal>
+                    <inputsignalID>is1</inputsignalID>
+                    <initialvalue>true</initialvalue>
+                </inputsignal>
+                <inputsignal>
+                    <inputsignalID>is2</inputsignalID>
+                    <initialvalue>false</initialvalue>
+                </inputsignal>
+            </inputsignals>
+        </toolspecific>
+        <page id="top">
+            <transition id="t1">
+                <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
+                    <node>n1</node>
+                    <subnet>s1</subnet>
+                    <type>discreteTransitionType</type>
+                    <inputsignalbinding>
+                        <signal>is1</signal>
+                        <signal>is2</signal>
+                    </inputsignalbinding>
+                    <inputsignalclause>(is1 OR NOT is2) AND (is1 OR is2)</inputsignalclause>
+                </toolspecific>
+                <name>
+                    <text>transition</text>
+                    <graphics>
+                        <offset x="0" y="0" />
+                    </graphics>
+                </name>
+                <graphics>
+                    <position x="285" y="205" />
+                </graphics>
+            </transition>
+        </page>
+    </net>
+</pnml>