diff --git a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
index 3530895e3097224f6a117ebdf451029e2ad9bd61..c9f39d7681204affff227e014a7b2da1eac7d033 100644
--- a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
+++ b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
@@ -39,6 +39,7 @@ public final class PnmlConstants {
     public static final String TRANSITION_SERVICE_SERVER_OUT_KEY = "serverOutput";
     public static final String TRANSITION_SERVICE_CHANNELS_KEY = "channels";
     public static final String TRANSITION_SERVICE_CHANNEL_KEY = "channel";
+    public static final String TRANSITION_SERVICE_CHANNEL_ID_KEY = "cid";
     public static final String TRANSITION_SERVICE_REQUEST_KEY = "request";
     public static final String TRANSITION_SERVICE_RESPONSE_KEY = "response";
 
@@ -48,17 +49,16 @@ public final class PnmlConstants {
     public static final String SUBNET_KEY = "subnet";
     public static final String TOPIC_KEY = "topic";
 
-    // bindings
-    public static final String INPUT_SIGNAL_BINDING_KEY = "inputsignalbinding";
-    public static final String INPUT_SIGNAL_SIGNAL_KEY = "signal";
-
+    // signal keys
     public static final String TRANSITION_ID_KEY = "transitionID";
     public static final String INPUT_SIGNAL_ID_KEY = "inputsignalID";
     public static final String PLACE_ID_KEY = "placeID";
-    public static final String OUTPUT_SIGNAL_ID_KEY = "outputsignalID";
     public static final String CURRENT_VALUE_KEY = "initialvalue";
-
     public static final String CLAUSE_KEY = "inputsignalclause";
+    public static final String INPUT_SIGNALS_DEF = "inputsignals";
+    public static final String INPUT_SIGNAL_DEF = "inputsignal";
+    public static final String INPUT_SIGNAL_ID_DEF = "inputsignalID";
+    public static final String INPUT_SIGNAL_INIT_VALUE_DEF = "initialvalue";
 
     // structural keys
     public static final String COMMUNICATORS = "communicators";
@@ -71,11 +71,6 @@ public final class PnmlConstants {
     public static final String SERVICE_CLIENT = "serviceClient";
     public static final String SERVICE_SERVER = "serviceServer";
 
-    public static final String INPUT_SIGNALS_DEF = "inputsignals";
-    public static final String INPUT_SIGNAL_DEF = "inputsignal";
-    public static final String INPUT_SIGNAL_ID_DEF = "inputsignalID";
-    public static final String INPUT_SIGNAL_INIT_VALUE_DEF = "initialvalue";
-
     // arc types
     public static final String ARC_TYPE_KEY = "type";
     public static final String DEFAULT_ARC = "default";
diff --git a/src/main/jastadd/base/Navigation.jrag b/src/main/jastadd/base/Navigation.jrag
index 55d925a693cd688bb5d4ab1243b90b1663c3f720..0003ecb7db49012d64da8eb707dba5fcbec24ba9 100644
--- a/src/main/jastadd/base/Navigation.jrag
+++ b/src/main/jastadd/base/Navigation.jrag
@@ -78,8 +78,8 @@ aspect Navigation {
   syn boolean TransitionInformation.isServiceTransitionInformation() = false;
   eq ServiceTransitionInformation.isServiceTransitionInformation() = true;
 
-  syn boolean TransitionInformation.isDefaultTransitionInformation() = false;
-  eq DefaultTransitionInformation.isDefaultTransitionInformation() = true;
+  syn boolean TransitionInformation.isSignalTransitionInformation() = false;
+  eq SignalTransitionInformation.isSignalTransitionInformation() = true;
 
   syn boolean TransitionNode.isRefTransition() = false;
   eq RefTransition.isRefTransition() = true;
@@ -129,8 +129,8 @@ aspect Navigation {
   syn ServiceTransitionInformation TransitionInformation.asServiceTransitionInformation() = null;
   eq ServiceTransitionInformation.asServiceTransitionInformation() = this;
 
-  syn DefaultTransitionInformation TransitionInformation.asDefaultTransitionInformation() = null;
-  eq DefaultTransitionInformation.asDefaultTransitionInformation() = this;
+  syn SignalTransitionInformation TransitionInformation.asSignalTransitionInformation() = null;
+  eq SignalTransitionInformation.asSignalTransitionInformation() = this;
 
   syn Place PlaceNode.place();
   eq Place.place() = this;
diff --git a/src/main/jastadd/base/clauses/expressions.jadd b/src/main/jastadd/base/clauses/expressions.jadd
index a5bba722a443aafd95d7c63eec14dea3c6c911d0..589a2cb565709240f591df6941bf9ed78ef05ce2 100644
--- a/src/main/jastadd/base/clauses/expressions.jadd
+++ b/src/main/jastadd/base/clauses/expressions.jadd
@@ -41,6 +41,27 @@ aspect SignalExpressions {
         return result;
     }
 
+    syn List<String> InputSignalClause.signals();
+
+    eq InputSignalClause.signals(){
+
+        Set<String> literalSet = new HashSet<>();
+
+        for(Disjunction dj : getDisjunctionList()){
+            for(Literal l : dj.getLiteralList()){
+                literalSet.add(l.getName());
+            }
+        }
+
+        List<String> retList = new ArrayList<>();
+
+        for(String s : literalSet){
+            retList.add(s);
+        }
+
+        return retList;
+    }
+
     syn boolean ASTNode.evalClause(ClauseValuesDefinition defs);
     eq ASTNode.evalClause(ClauseValuesDefinition defs) = false;
 
diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd
index a47045c60f261b5ee9049fa00312a49da0046248..f1cccb2a51d6a9056a8c71a62cec712b2e2ff303 100644
--- a/src/main/jastadd/base/distribution/DistributedPN.jadd
+++ b/src/main/jastadd/base/distribution/DistributedPN.jadd
@@ -39,10 +39,6 @@ aspect PnDistribution {
         return ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList());
     }
 
-    syn lazy InputSignalClause DefaultTransitionInformation.getInputSignalClause(){
-        return ToolSpecificsParser.getClauseFromToolSpecifics(this.containingTransition().getToolspecificList());
-    }
-
     syn lazy CommunicatorInformation PetriNet.getCommunicatorInformation(){
         return ToolSpecificsParser.getCommunicatorInformationFromToolSpecifics(this.getToolspecificList());
     }
diff --git a/src/main/jastadd/base/io/IoPN.jadd b/src/main/jastadd/base/io/IoPN.jadd
index fd198879b7f5c00d39a510fe1b5cd5eb2dd11c78..bc1c7bdb42e2141be8c82d7a8dce5c2e1260fede 100644
--- a/src/main/jastadd/base/io/IoPN.jadd
+++ b/src/main/jastadd/base/io/IoPN.jadd
@@ -7,7 +7,4 @@ aspect IoPnExtension{
         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 dfaa8d28235f6eb6a8683c06f04240c84a6c9b6e..f80c79bd4163d0805db12e2c789d7a3bd36bf4f1 100644
--- a/src/main/jastadd/base/io/IoPN.relast
+++ b/src/main/jastadd/base/io/IoPN.relast
@@ -1,22 +1,20 @@
+// Elements
+DinerosTransition : Transition ::= /StaticTransitionInformation:TransitionInformation/ [MutableTransitionInformation:TransitionInformation];
+DinerosPlace : Place ::= /StaticPlaceInformation:PlaceInformation/ [MutablePlaceInformation:PlaceInformation];
+
 // General Information
-abstract PnObjectInformation ::= <Node:String> <SubNet:String> <Instance:String> <TraceInfo:String>;
+abstract PnObjectInformation ::= <Node:String> <SubNet:String> <TraceInfo:String>;
 PlaceInformation : PnObjectInformation;
 
+// Transition Information
+abstract TransitionInformation : PnObjectInformation;
+TopicTransitionInformation : TransitionInformation ::= <Topic:String> SubscriberPort:SubscriberPort* PublisherPort:PublisherPort*;
+ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String> ServerChannel:ServiceChannel ClientChannel:ServiceChannel*;
+SignalTransitionInformation : TransitionInformation ::= Clause:InputSignalClause; /* only normal transition have signals attached */
+
 // Ports
 abstract Port;
 abstract TopicPort : Port ::= <PlaceId:String> <Limit:int>;
 SubscriberPort : TopicPort;
 PublisherPort : TopicPort;
-ServiceChannel : Port ::= <RequestPort:String> <ResponsePort:String>;
-
-// Transition Information
-InputSignalBinding ::= <InputSignalId:String>;
-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 ::= InputSignal:InputSignalBinding* /Clause:InputSignalClause/; /* only normal transition have signals attached */
-
-// Elements
-DinerosTransition : Transition ::= /StaticTransitionInformation:TransitionInformation/ [MutableTransitionInformation:TransitionInformation];
-DinerosPlace : Place ::= /StaticPlaceInformation:PlaceInformation/ [MutablePlaceInformation:PlaceInformation];
-
+ServiceChannel : Port ::= <RequestPlaceId:String> <ResponsePlaceId:String> <Id:String>;
\ No newline at end of file
diff --git a/src/main/jastadd/base/parsing/PnmlSignalParser.jadd b/src/main/jastadd/base/parsing/PnmlSignalParser.jadd
index 23dc214456b333f1fdbeeaa4512a675f3428a466..29dc90ca0621f63431c8048e1b63650317f53872 100644
--- a/src/main/jastadd/base/parsing/PnmlSignalParser.jadd
+++ b/src/main/jastadd/base/parsing/PnmlSignalParser.jadd
@@ -17,54 +17,6 @@ public class PnmlSignalParser {
 
     private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PnmlSignalParser.class);
 
-    public static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos) {
-
-        try {
-            Document doc = parseToolSpecifics(toolInfos);
-            return parseInputSignalBindingDefinitionsInternal(doc);
-
-        } catch (ParserConfigurationException | SAXException | IOException e) {
-            logger.error(e.getMessage());
-        }
-
-        return null;
-    }
-
-    private static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitionsInternal(Document doc) {
-
-        if (doc == null) {
-            return null;
-        }
-
-        org.w3c.dom.NodeList isBindingDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDING_KEY);
-        JastAddList<InputSignalBinding> jastAddBindingList = new JastAddList<>();
-
-        if (isBindingDefList.getLength() > 0 && isBindingDefList.item(0) != null) {
-
-            org.w3c.dom.Node isBindingsNode = isBindingDefList.item(0);
-
-
-            if (isBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
-
-                Element isBindingsElement = (Element) isBindingsNode;
-
-                org.w3c.dom.NodeList isBindingNodes = isBindingsElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_SIGNAL_KEY);
-
-                for (int i = 0; i < isBindingNodes.getLength(); i++) {
-
-                    org.w3c.dom.Node isBindingNode = isBindingNodes.item(i);
-                    Element isBindingElement = (Element) isBindingNode;
-
-                    InputSignalBinding isb = new InputSignalBinding();
-                    isb.setInputSignalId(isBindingElement.getTextContent());
-
-                    jastAddBindingList.add(isb);
-                }
-            }
-        }
-        return jastAddBindingList;
-    }
-
     private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException {
 
         if (toolInfos == null || toolInfos.getNumChild() == 0) {
diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
index 7ecb26fda5370a2bada1e20d685d11b3a0fcd0ed..d8e1f218ee0202a3df834f8b7eb2ed1f70a5ac85 100644
--- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
+++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
@@ -150,6 +150,10 @@ aspect ToolSpecificsParser{
             return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.NODE_KEY);
         }
 
+        public static String getChannelIdFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+            return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.TRANSITION_SERVICE_CHANNEL_ID_KEY);
+        }
+
         public static String getServerInputFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
             return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.TRANSITION_SERVICE_SERVER_IN_KEY);
         }
@@ -339,8 +343,9 @@ aspect ToolSpecificsParser{
                             }
                             if(listKey.equals(PnmlConstants.TRANSITION_SERVICE_CHANNELS_KEY)){
                                 ServiceChannel sc = new ServiceChannel();
-                                sc.setRequestPort(portField1);
-                                sc.setRequestPort(portField2);
+                                sc.setRequestPlaceId(portField1);
+                                sc.setResponsePlaceId(portField2);
+                                sc.setId(pDefElement.getElementsByTagName(PnmlConstants.TRANSITION_SERVICE_CHANNEL_ID_KEY).item(0).getTextContent());
                                 ports.add(sc);
                             }
                         }
@@ -358,7 +363,7 @@ aspect ToolSpecificsParser{
             if (getTransitionTopicFromToolSpecifics(toolInfos) != null) {
                 TopicTransitionInformation topicTransition = new TopicTransitionInformation();
                 topicTransition.setNode(getNodeFromToolSpecifics(toolInfos));
-                topicTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
+                // topicTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
                 topicTransition.setTopic(getTransitionTopicFromToolSpecifics(toolInfos));
                 topicTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
 
@@ -386,7 +391,7 @@ aspect ToolSpecificsParser{
             if (getTransitionServiceNameFromToolSpecifics(toolInfos) != null) {
                 ServiceTransitionInformation serviceTransition = new ServiceTransitionInformation();
                 serviceTransition.setNode(getNodeFromToolSpecifics(toolInfos));
-                serviceTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
+                // serviceTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
                 serviceTransition.setServiceName(getTransitionServiceNameFromToolSpecifics(toolInfos));
                 serviceTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
 
@@ -396,15 +401,15 @@ aspect ToolSpecificsParser{
                         PnmlConstants.TRANSITION_SERVICE_REQUEST_KEY,
                         PnmlConstants.TRANSITION_SERVICE_RESPONSE_KEY);
                 for(Port s : servicePorts){
-                    serviceTransition.addServiceChannel(s.asServiceChannel());
+                    serviceTransition.addClientChannel(s.asServiceChannel());
                 }
 
                 return serviceTransition;
             }
 
-            DefaultTransitionInformation transitionInformation = new DefaultTransitionInformation();
+            SignalTransitionInformation transitionInformation = new SignalTransitionInformation();
             transitionInformation.setNode(getNodeFromToolSpecifics(toolInfos));
-            transitionInformation.setType(getTransitionTypeFromToolSpecifics(toolInfos));
+            //transitionInformation.setType(getTransitionTypeFromToolSpecifics(toolInfos));
             transitionInformation.setSubNet(getTransitionSubnetInfo(toolInfos));
 
             return transitionInformation;
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 fb6a46642c66ef4b47c893d214d8fa635b9d2d16..ab1fc8bd601ea5c5d2687a2f6bdf3594bc5975b9 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,8 +1,16 @@
 package de.tudresden.inf.st.pnml.base;
 
+import beaver.Parser;
+import de.tudresden.inf.st.pnml.jastadd.model.InputSignalClause;
+import de.tudresden.inf.st.pnml.jastadd.parser.ExpressionParser;
+import de.tudresden.inf.st.pnml.jastadd.scanner.ExpressionScanner;
+
+import java.io.IOException;
+import java.io.StringReader;
+
 public class Main {
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws IOException, Parser.Exception {
 
         // Nothing to do here
         // List<PetriNet> petriNets = PnmlParser.parsePnml("...");
diff --git a/src/main/resources/nets/TestNet2.pnml b/src/main/resources/nets/TestNet2.pnml
index 995cf0334da084faa950a775a9ec4f2c82db591e..63df430a0a3f6a1b31a913206a7e1956885c25ff 100644
--- a/src/main/resources/nets/TestNet2.pnml
+++ b/src/main/resources/nets/TestNet2.pnml
@@ -58,6 +58,7 @@
                     <serverOutput>serverOut</serverOutput>
                     <channels>
                         <channel>
+                            <cid>c1</cid>
                             <request>req1</request>
                             <response>res1</response>
                         </channel>
diff --git a/src/main/resources/nets/TestNet3.pnml b/src/main/resources/nets/TestNet3.pnml
index d1a7cc9fa4acfe3b1163705a8f2cee9ba21bd537..15362bcc04e506315fa80a9aa76dc83e6178d864 100644
--- a/src/main/resources/nets/TestNet3.pnml
+++ b/src/main/resources/nets/TestNet3.pnml
@@ -24,10 +24,6 @@
                     <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>