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 c014e8b80936d8ffaed49ad5c79533955bc25140..b39aee967694c34488da386226f9679457bac465 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
@@ -30,7 +30,7 @@ public final class PnmlConstants {
     public static final String PLACE_TYPE_CONTINUOUS = "continuousPlaceType";
 
     // general properties
-    public static final String LOCATION_KEY = "location";
+    public static final String NODE_KEY = "node";
     public static final String TYPE_KEY = "type";
 
     // service related keys
@@ -44,11 +44,8 @@ public final class PnmlConstants {
     public static final String TOPIC_KEY = "topic";
 
     // bindings
-    public static final String INPUT_SIGNAL_BINDINGS_KEY = "inputsignalbindings";
-    public static final String OUTPUT_SIGNAL_BINDINGS_KEY = "outputsignalbindings";
-
     public static final String INPUT_SIGNAL_BINDING_KEY = "inputsignalbinding";
-    public static final String OUTPUT_SIGNAL_BINDING_KEY = "outputsignalbinding";
+    public static final String INPUT_SIGNAL_SIGNAL_KEY = "signal";
 
     public static final String TRANSITION_ID_KEY = "transitionID";
     public static final String INPUT_SIGNAL_ID_KEY = "inputsignalID";
@@ -80,7 +77,6 @@ public final class PnmlConstants {
 
     // arc types
     public static final String ARC_TYPE_KEY = "type";
-
     public static final String DEFAULT_ARC = "default";
     public static final String INHIBITOR_ARC = "inhibitor";
 
diff --git a/src/main/jastadd/base/Navigation.jrag b/src/main/jastadd/base/Navigation.jrag
index f90d77c1dc4ff2da2fe31b4b6de2934a3e5d74e1..b2302e466dad06b9c351e612965deba82eedcd76 100644
--- a/src/main/jastadd/base/Navigation.jrag
+++ b/src/main/jastadd/base/Navigation.jrag
@@ -108,11 +108,11 @@ aspect Navigation {
   syn TransitionNode Node.asTransitionNode() = null;
   eq TransitionNode.asTransitionNode() = this;
 
-  syn InputSignalTransition Transition.asInputSignalTransition() = null;
-  eq InputSignalTransition.asInputSignalTransition() = this;
+  syn DinerosTransition Transition.asDinerosTransition() = null;
+  eq DinerosTransition.asDinerosTransition() = this;
 
-  syn OutputSignalPlace Place.asOutputSignalPlace() = null;
-  eq OutputSignalPlace.asOutputSignalPlace() = this;
+  syn DinerosPlace Place.asDinerosPlace() = null;
+  eq DinerosPlace.asDinerosPlace() = this;
 
   syn TopicTransitionInformation TransitionInformation.asTopicTransitionInformation() = null;
   eq TopicTransitionInformation.asTopicTransitionInformation() = this;
diff --git a/src/main/jastadd/base/clauses/ExpressionParser.beaver b/src/main/jastadd/base/clauses/ExpressionParser.beaver
index 9505a3cc1db834710e67ca01573a0868db96cce5..0871d1c03fb2f0a13e8fb8af5d77ce6d23f7ebec 100644
--- a/src/main/jastadd/base/clauses/ExpressionParser.beaver
+++ b/src/main/jastadd/base/clauses/ExpressionParser.beaver
@@ -9,7 +9,7 @@ package de.tudresden.inf.st.pnml.jastadd.parser;
 %typeof exp = "Exp";
 %goal goal;
 goal =
-    exp.exp {: return new Symbol(new Root(exp)); :}
+    exp.exp {: return new Symbol(new InputSignalClause(exp)); :}
   ;
 exp =
     exp.a AND.AND exp.b {: return new Symbol(new AndExp(a, b)); :}
diff --git a/src/main/jastadd/base/clauses/expressions.jadd b/src/main/jastadd/base/clauses/expressions.jadd
index 763058481bb785f7a907f84a802f3828450f1d3a..635601127cae1688ac6a9ab986f33393693ba6cb 100644
--- a/src/main/jastadd/base/clauses/expressions.jadd
+++ b/src/main/jastadd/base/clauses/expressions.jadd
@@ -7,7 +7,7 @@ aspect SignalExpressions {
 
     eq ASTNode.printExp() = "";
 
-    eq Root.printExp() {
+    eq InputSignalClause.printExp() {
         String result = "";
 
         if(getExp() != null){
diff --git a/src/main/jastadd/base/clauses/expressions.relast b/src/main/jastadd/base/clauses/expressions.relast
index ade97b2562eb5c0f0e7d0b4880f07fca1ac7e53d..99586c025b0639f5eee742262e0eacc4c34f853b 100644
--- a/src/main/jastadd/base/clauses/expressions.relast
+++ b/src/main/jastadd/base/clauses/expressions.relast
@@ -1,4 +1,5 @@
-Root ::= Exp ;
+// TODO: REWORK FOR CONJUNCTIVE NORMALFORM
+InputSignalClause ::= Exp ;
 
 abstract Exp ;
 abstract UnaryExp:Exp ::= Exp ;
diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd
index 7102ae7ac24f459a65fe29b8145e75868fa9ee91..19d5e8cd979f74fb668bf1a0a63f9973e6527661 100644
--- a/src/main/jastadd/base/distribution/DistributedPN.jadd
+++ b/src/main/jastadd/base/distribution/DistributedPN.jadd
@@ -3,43 +3,43 @@ import org.apache.commons.collections4.MultiValuedMap;
 
 aspect PnDistribution {
 
-    syn TransitionInformation InputSignalTransition.getStaticTransitionInformation() {
+    syn TransitionInformation DinerosTransition.getStaticTransitionInformation() {
 
-        if(!this.hasMutualTransitionInformation()){
+        if(!this.hasMutableTransitionInformation()){
             TransitionInformation tInfo = ToolSpecificsParser.getTransitionInformation(this.getToolspecificList());
             return tInfo;
         }
 
-        return this.getMutualTransitionInformation();
+        return this.getMutableTransitionInformation();
     }
 
-    syn PlaceInformation OutputSignalPlace.getStaticPlaceInformation() {
+    syn PlaceInformation DinerosPlace.getStaticPlaceInformation() {
 
-        if(!this.hasMutualPlaceInformation()){
+        if(!this.hasMutablePlaceInformation()){
             PlaceInformation tInfo = ToolSpecificsParser.getPlaceInformationInformation(this.getToolspecificList());
             return tInfo;
         }
 
-        return this.getMutualPlaceInformation();
+        return this.getMutablePlaceInformation();
     }
 
-    syn lazy String RefTransition.getLocation() {
-        return ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList());
+    syn lazy String RefTransition.getNode() {
+        return ToolSpecificsParser.getNodeFromToolSpecifics(this.getToolspecificList());
     }
 
     syn lazy String RefTransition.getSubNet() {
         return ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList());
     }
 
-    syn lazy String RefPlace.getLocation() {
-        return ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList());
+    syn lazy String RefPlace.getNode() {
+        return ToolSpecificsParser.getNodeFromToolSpecifics(this.getToolspecificList());
     }
 
     syn lazy String RefPlace.getSubNet() {
         return ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList());
     }
 
-    syn lazy Root InputSignalTransition.getInputSignalClause(){
+    syn lazy InputSignalClause DinerosTransition.getInputSignalClause(){
         return ToolSpecificsParser.getClauseFromToolSpecifics(this.getToolspecificList());
     }
 
diff --git a/src/main/jastadd/base/distribution/Filtering.jadd b/src/main/jastadd/base/distribution/Filtering.jadd
index 31b25a49865ce1738756e9f2bc788f031c6f770e..91a7fb2850ef51117eb63201da71552f9476fb0f 100644
--- a/src/main/jastadd/base/distribution/Filtering.jadd
+++ b/src/main/jastadd/base/distribution/Filtering.jadd
@@ -5,7 +5,7 @@ aspect Filtering {
             java.util.Set<Place> s = new java.util.HashSet<>();
 
             for (Place p : places) {
-                if(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(subnet)){
+                if(p.asDinerosPlace().getStaticPlaceInformation().getSubNet().equals(subnet)){
                     s.add(p);
                 }
             }
@@ -17,7 +17,7 @@ aspect Filtering {
             java.util.Set<Transition> s = new java.util.HashSet<>();
 
             for (Transition t : transitions) {
-                if(t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet)){
+                if(t.asDinerosTransition().getStaticTransitionInformation().getSubNet().equals(subnet)){
                     s.add(t);
                 }
             }
diff --git a/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd b/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd
index 46d8d8921b8c9532933a40644230d40f8de1afee..2b618279e29f2d3435b5f834554aa30313883004 100644
--- a/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd
+++ b/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd
@@ -197,11 +197,11 @@ aspect PrimitiveElementsConverter{
         }
     }
 
-    syn fr.lip6.move.pnml.ptnet.hlapi.TransitionHLAPI InputSignalTransition.convertToPnmlObject(){
+    syn fr.lip6.move.pnml.ptnet.hlapi.TransitionHLAPI DinerosTransition.convertToPnmlObject(){
         return PrimitiveElementsConverter.convertTransitionToPnmlObject(this);
     }
 
-    syn fr.lip6.move.pnml.ptnet.hlapi.PlaceHLAPI OutputSignalPlace.convertToPnmlObject(){
+    syn fr.lip6.move.pnml.ptnet.hlapi.PlaceHLAPI DinerosPlace.convertToPnmlObject(){
         return PrimitiveElementsConverter.convertPlaceToPnmlObject(this);
     }
 }
\ No newline at end of file
diff --git a/src/main/jastadd/base/io/IoPN.jadd b/src/main/jastadd/base/io/IoPN.jadd
index ca6733315912495d5dbd92a2a5a88fee41fc713a..eee4bfee05904a089c622c1ac2e371a8437efa7d 100644
--- a/src/main/jastadd/base/io/IoPN.jadd
+++ b/src/main/jastadd/base/io/IoPN.jadd
@@ -1,88 +1,6 @@
 aspect IoPnExtension{
 
-        inh Marking OutputSignalPlace.marking();
-
+        inh Marking DinerosPlace.marking();
         eq PetriNetDoc.getChild().marking() = null;
-
         eq Marking.getPetriNet().marking() = this;
-
-        eq OutputSignalPlace.getOutputSignalBinding().containingPlace() = this;
-
-        inh Place OutputSignalBinding.containingPlace();
-
-        eq Page.getObject().containingPlace() = null;
-
-        syn lazy JastAddList<InputSignalBinding> InputSignalTransition.getStaticInputSignalBindingList() {
-
-            if(this.getMutualInputSignalBindingList() == null || this.getMutualInputSignalBindingList().getNumChild() == 0){
-                JastAddList<InputSignalBinding> isBindings = PnmlSignalParser.parseInputSignalBindingDefinitions(this.getToolspecificList());
-                return isBindings;
-            }
-
-            return this.getMutualInputSignalBindingList();
-        }
-
-        syn lazy JastAddList<OutputSignalBinding> OutputSignalPlace.getOutputSignalBindingList() {
-
-            JastAddList<OutputSignalBinding> osBindings = PnmlSignalParser.parseOutputSignalBindingDefinitions(this.getToolspecificList());
-
-            return osBindings;
-        }
-
-        syn String OutputSignalPlace.getInitialOutputSignalValue(String id){
-            return PnmlSignalParser.getInitialOutputSignalValueBySignalID(this.getToolspecificList(), id);
-        }
-
-        syn String OutputSignalBinding.getOutputSignalValueForDefaultMarking(){
-
-            OutputSignalPlace osp = this.containingPlace().asOutputSignalPlace();
-            Marking marking = osp.marking();
-            MarkedPlace markedPlace = marking.resolvePlaceById(this.getPlaceID());
-
-            JastAddList<EqualityOutputMapping> eomList = this.getEqualityOMListNoTransform();
-            JastAddList<ThresholdOutputMapping> tomList = this.getThresholdOMListNoTransform();
-            JastAddList<RangeOutputMapping> romList = this.getRangeOMListNoTransform();
-
-            // eom
-
-            int result = -1;
-
-            for(EqualityOutputMapping eom : eomList){
-                if((eom.getValue() == markedPlace.getMarking()) && result == -1){
-                    result = eom.getResult();
-                    break;
-                }
-            }
-
-            // tom
-
-            if(result > -1){
-                for(ThresholdOutputMapping tom : tomList){
-                    if(tom.getValue() <= markedPlace.getMarking()){
-                        result = tom.getResult();
-                        break;
-                    }
-                }
-            }
-
-            // rom
-
-            if(result > -1){
-                for(RangeOutputMapping rom: romList){
-                    if((rom.getLowerBound() <= markedPlace.getMarking()) && (rom.getUpperBound() >= markedPlace.getMarking())){
-                        result = rom.getResult();
-                        break;
-                    }
-                }
-            }
-
-            // 0 (disabled Signal) is default
-            if(result == -1){
-                result = 0;
-            }
-
-            String output = String.valueOf(result) + "-" + this.getOutputSignalID();
-
-            return output;
-        }
 }
diff --git a/src/main/jastadd/base/io/IoPN.relast b/src/main/jastadd/base/io/IoPN.relast
index fb0ba30c2bc8751f9169e439dec7f19ded1ea2fa..b81d10091d7d575ad042b731be6a85884ac63933 100644
--- a/src/main/jastadd/base/io/IoPN.relast
+++ b/src/main/jastadd/base/io/IoPN.relast
@@ -1,18 +1,21 @@
-InputSignalBinding : PnObject ::= <TransitionID:String> <InputSignalID:String> <InputSignalValue:int>;
-OutputSignalBinding : PnObject ::= <PlaceID:String> <OutputSignalID:String> EqualityOM:EqualityOutputMapping* ThresholdOM:ThresholdOutputMapping* RangeOM:RangeOutputMapping*;
+// General Information
+abstract PnObjectInformation ::= <Node:String> <SubNet:String> <Instance:String> <TraceInfo:String>;
+PlaceInformation : PnObjectInformation;
 
-abstract TransitionInformation ::= <Location:String> <Type:String> <InputLimit:java.lang.Integer> <OutputLimit:java.lang.Integer> <SubNet:String> <Instance:String> <TraceInfo:String>;
-TopicTransitionInformation : TransitionInformation ::= <Topic:String>;
-ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String>;
-DefaultTransitionInformation : TransitionInformation;
-
-PlaceInformation ::= <Location:String> <Type:String> <SubNet:String> <Instance:String> <TraceInfo:String>;
+// Ports
+TopicPort ::= <PlaceId:String> <Limit:int>;
+SubscriberPort : TopicPort;
+PublisherPort : TopicPort;
+ServiceChannel ::= <RequestPort:String> <ResponsePort:String>;
 
-InputSignalTransition : Transition ::= /StaticInputSignalBinding:InputSignalBinding*/ MutualInputSignalBinding:InputSignalBinding* /StaticTransitionInformation:TransitionInformation/ [MutualTransitionInformation:TransitionInformation] /InputSignalClause:Root/;
-OutputSignalPlace : Place ::= /OutputSignalBinding*/ /StaticPlaceInformation:PlaceInformation/ [MutualPlaceInformation:PlaceInformation];
+// Transition Information
+InputSignalBinding ::= <InputSignalId:String>;
+abstract TransitionInformation : PnObjectInformation ::= <Type:String> InputSignal:InputSignalBinding*;
+TopicTransitionInformation : TransitionInformation ::= <Topic:String> SubscriberPorts:SubscriberPort* PublisherPorts:PublisherPort*;
+ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String> <ServerInput:String> <ServerOutput:String> ServiceChannels:ServiceChannel*;
+DefaultTransitionInformation : TransitionInformation;
 
-OutputMapping;
+// Elements
+DinerosTransition : Transition ::= /StaticTransitionInformation:TransitionInformation/ [MutableTransitionInformation:TransitionInformation] /Clause:InputSignalClause/;
+DinerosPlace : Place ::= /StaticPlaceInformation:PlaceInformation/ [MutablePlaceInformation:PlaceInformation];
 
-EqualityOutputMapping : OutputMapping ::= <Value:java.lang.Integer> <Result:java.lang.Integer>;
-ThresholdOutputMapping : OutputMapping ::= <Value:java.lang.Integer> <Result:java.lang.Integer>;
-RangeOutputMapping : OutputMapping ::= <UpperBound:java.lang.Integer> <LowerBound:java.lang.Integer> <Result:java.lang.Integer>;
diff --git a/src/main/jastadd/base/parsing/PnmlParserInternal.jadd b/src/main/jastadd/base/parsing/PnmlParserInternal.jadd
index 64d6266461fb5d8a66fa18e129b7c50a3db4245e..0b6a57cf6800a7646e920e7b1f84d9129141a84e 100644
--- a/src/main/jastadd/base/parsing/PnmlParserInternal.jadd
+++ b/src/main/jastadd/base/parsing/PnmlParserInternal.jadd
@@ -110,7 +110,7 @@ aspect PnmlParserInternal{
         }
 
         private Place getPlace(fr.lip6.move.pnml.ptnet.Place source) {
-            Place result = new OutputSignalPlace();
+            Place result = new DinerosPlace();
             fillPlace(source, result);
             return result;
         }
@@ -144,7 +144,7 @@ aspect PnmlParserInternal{
         }
 
         private Transition getTransition(fr.lip6.move.pnml.ptnet.Transition source) {
-            Transition result = new InputSignalTransition();
+            Transition result = new DinerosTransition();
             fillTransition(source, result);
             return result;
         }
diff --git a/src/main/jastadd/base/parsing/PnmlSignalParser.jadd b/src/main/jastadd/base/parsing/PnmlSignalParser.jadd
index 31bd45773abff157566f509f725249e138272c02..23dc214456b333f1fdbeeaa4512a675f3428a466 100644
--- a/src/main/jastadd/base/parsing/PnmlSignalParser.jadd
+++ b/src/main/jastadd/base/parsing/PnmlSignalParser.jadd
@@ -13,210 +13,76 @@ import java.io.InputStream;
 
 aspect PnmlSignalParser{
 
-    public class PnmlSignalParser {
+public class PnmlSignalParser {
 
-        private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PnmlSignalParser.class);
+    private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PnmlSignalParser.class);
 
-        public static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos) {
+    public static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos) {
 
-            try {
-                Document doc = parseToolSpecifics(toolInfos);
-                return parseInputSignalBindingDefinitionsInternal(doc);
+        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_BINDINGS_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_BINDING_KEY);
-
-                    for (int i = 0; i < isBindingNodes.getLength(); i++) {
-
-                        org.w3c.dom.Node isBindingNode = isBindingNodes.item(i);
-                        Element isBindingElement = (Element) isBindingNode;
-
-                        String tID = isBindingElement.getElementsByTagName(PnmlConstants.TRANSITION_ID_KEY).item(0).getTextContent();
-                        String isID = isBindingElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_ID_KEY).item(0).getTextContent();
-                        int cVal = Integer.valueOf(isBindingElement.getElementsByTagName(PnmlConstants.CURRENT_VALUE_KEY).item(0).getTextContent());
-
-                        // now detected by pnml-relast-validator
-                        /*
-                        if(cVal != 1 && cVal != 0){
-                            logger.error("[PARSER] Initial value of input signal " + isID + " is not value. Falling back to 0.");
-                            cVal = 0;
-                        }
-                        */
-
-                        InputSignalBinding isb = new InputSignalBinding();
-                        isb.setInputSignalValue(cVal);
-                        isb.setInputSignalID(isID);
-                        isb.setTransitionID(tID);
-
-                        jastAddBindingList.add(isb);
-                    }
-                }
-            }
-            return jastAddBindingList;
-        }
-
-        public static JastAddList<OutputSignalBinding> parseOutputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos) {
-
-            try {
-                Document doc = parseToolSpecifics(toolInfos);
-                return parseOutputSignalBindingDefinitionsInternal(doc);
-
-            } catch (ParserConfigurationException | SAXException | IOException e) {
-                logger.error(e.getMessage());
-            }
-
-            return null;
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            logger.error(e.getMessage());
         }
 
-        public static String getInitialOutputSignalValueBySignalID(JastAddList<ToolInfo> toolInfos, String id) {
-
-            try {
-                Document doc = parseToolSpecifics(toolInfos);
-
-                org.w3c.dom.NodeList osBindingDefList = doc.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDINGS_KEY);
-
-                if (osBindingDefList.getLength() > 0 && osBindingDefList.item(0) != null) {
-
-                    org.w3c.dom.Node osBindingsNode = osBindingDefList.item(0);
-
-                    if (osBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
-
-                        Element osBindingsElement = (Element) osBindingsNode;
-
-                        org.w3c.dom.NodeList osBindingNodes = osBindingsElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDING_KEY);
-
-                        for (int i = 0; i < osBindingNodes.getLength(); i++) {
-
-                            org.w3c.dom.Node osBindingNode = osBindingNodes.item(i);
-                            Element osBindingElement = (Element) osBindingNode;
-
-                            String osID = osBindingElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_ID_KEY).item(0).getTextContent();
-
-                            if (osID.equals(id)) {
-                                return String.valueOf(osBindingElement.getElementsByTagName(PnmlConstants.CURRENT_VALUE_KEY).item(0).getTextContent());
-                            }
-                        }
-                    }
-                }
+        return null;
+    }
 
-            } catch (ParserConfigurationException | SAXException | IOException e) {
-                logger.error(e.getMessage());
-            }
+    private static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitionsInternal(Document doc) {
 
+        if (doc == null) {
             return null;
         }
 
-        private static JastAddList<OutputSignalBinding> parseOutputSignalBindingDefinitionsInternal(Document doc) {
+        org.w3c.dom.NodeList isBindingDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDING_KEY);
+        JastAddList<InputSignalBinding> jastAddBindingList = new JastAddList<>();
 
-            org.w3c.dom.NodeList osBindingDefList = doc.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDINGS_KEY);
-            JastAddList<OutputSignalBinding> jastAddBindingList = new JastAddList<>();
+        if (isBindingDefList.getLength() > 0 && isBindingDefList.item(0) != null) {
 
-            if (osBindingDefList.getLength() > 0 && osBindingDefList.item(0) != null) {
+            org.w3c.dom.Node isBindingsNode = isBindingDefList.item(0);
 
-                org.w3c.dom.Node osBindingsNode = osBindingDefList.item(0);
 
-                if (osBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
+            if (isBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
 
-                    Element osBindingsElement = (Element) osBindingsNode;
+                Element isBindingsElement = (Element) isBindingsNode;
 
-                    org.w3c.dom.NodeList osBindingNodes = osBindingsElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDING_KEY);
+                org.w3c.dom.NodeList isBindingNodes = isBindingsElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_SIGNAL_KEY);
 
-                    for (int i = 0; i < osBindingNodes.getLength(); i++) {
+                for (int i = 0; i < isBindingNodes.getLength(); i++) {
 
-                        org.w3c.dom.Node osBindingNode = osBindingNodes.item(i);
-                        Element osBindingElement = (Element) osBindingNode;
+                    org.w3c.dom.Node isBindingNode = isBindingNodes.item(i);
+                    Element isBindingElement = (Element) isBindingNode;
 
-                        String pID = osBindingElement.getElementsByTagName(PnmlConstants.PLACE_ID_KEY).item(0).getTextContent();
-                        String osID = osBindingElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_ID_KEY).item(0).getTextContent();
-                        String cVal = String.valueOf(osBindingElement.getElementsByTagName(PnmlConstants.CURRENT_VALUE_KEY).item(0).getTextContent());
+                    InputSignalBinding isb = new InputSignalBinding();
+                    isb.setInputSignalId(isBindingElement.getTextContent());
 
-                        OutputSignalBinding osb = new OutputSignalBinding();
-                        parseOutputMappings(osBindingElement, pID, osID, cVal, osb);
-                        jastAddBindingList.add(osb);
-                    }
+                    jastAddBindingList.add(isb);
                 }
             }
-
-            return jastAddBindingList;
         }
+        return jastAddBindingList;
+    }
 
-        private static void parseOutputMappings(Element osBindingElement, String pID, String osID, String cVal, OutputSignalBinding osb) {
-            //osb.setCurrentValue(cVal);
-            osb.setOutputSignalID(osID);
-            osb.setPlaceID(pID);
-
-            org.w3c.dom.NodeList eqMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.EQUAL_OS_KEY);
-            org.w3c.dom.NodeList thresholdMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.THRESHOLD_KEY);
-            org.w3c.dom.NodeList rangeMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.RANGE_OS_KEY);
-
-            for (int j = 0; j < eqMappingNodeList.getLength(); j++) {
-                Element eqElement = (Element) eqMappingNodeList.item(j);
-                EqualityOutputMapping eom = new EqualityOutputMapping();
-                eom.setValue(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.VALUE_KEY).item(0).getTextContent()));
-                eom.setResult(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.RESULT_KEY).item(0).getTextContent()));
-                osb.addEqualityOM(eom);
-            }
-
-            for (int k = 0; k < thresholdMappingNodeList.getLength(); k++) {
-                Element eqElement = (Element) thresholdMappingNodeList.item(k);
-                ThresholdOutputMapping tom = new ThresholdOutputMapping();
-                tom.setValue(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.VALUE_KEY).item(0).getTextContent()));
-                tom.setResult(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.RESULT_KEY).item(0).getTextContent()));
-                osb.addThresholdOM(tom);
-            }
+    private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException {
 
-            for (int l = 0; l < rangeMappingNodeList.getLength(); l++) {
-                Element eqElement = (Element) rangeMappingNodeList.item(l);
-                RangeOutputMapping rom = new RangeOutputMapping();
-                rom.setLowerBound(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.LOWER_BOUND_KEY).item(0).getTextContent()));
-                rom.setUpperBound(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.UPPER_BOUND_KEY).item(0).getTextContent()));
-                rom.setResult(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.RESULT_KEY).item(0).getTextContent()));
-                osb.addRangeOM(rom);
-            }
+        if (toolInfos == null || toolInfos.getNumChild() == 0) {
+            return null;
         }
 
-        private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException {
-
-            if (toolInfos == null || toolInfos.getNumChild() == 0) {
-                return null;
-            }
-
-            StringBuffer toolInfoStringBuffer = toolInfos.getChild(0).getFormattedXMLBuffer();
+        StringBuffer toolInfoStringBuffer = toolInfos.getChild(0).getFormattedXMLBuffer();
 
-            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
-            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
 
-            Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer));
-            doc.getDocumentElement().normalize();
-            return doc;
-        }
+        Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer));
+        doc.getDocumentElement().normalize();
+        return doc;
+    }
 
-        private static InputStream fromStringBuffer(StringBuffer buf) {
-            return new ByteArrayInputStream(buf.toString().getBytes());
-        }
+    private static InputStream fromStringBuffer(StringBuffer buf) {
+        return new ByteArrayInputStream(buf.toString().getBytes());
     }
+}
 }
\ No newline at end of file
diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
index 8f0f931021a3be228ea960569adb283b1e33839b..fa83544c4c3a44db2daf7ee70354a0a4af0066f2 100644
--- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
+++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
@@ -19,7 +19,7 @@ aspect ToolSpecificsParser{
 
         private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ToolSpecificsParser.class);
 
-        public static Root getClauseFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+        public static InputSignalClause getClauseFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
 
             if (toolInfos.getNumChild() > 0) {
                 try {
@@ -31,7 +31,7 @@ aspect ToolSpecificsParser{
                         StringReader reader = new StringReader(content);
                         ExpressionScanner scanner = new ExpressionScanner(reader);
                         ExpressionParser parser = new ExpressionParser();
-                        return ((Root) parser.parse(scanner));
+                        return ((InputSignalClause) parser.parse(scanner));
                     }
 
                 } catch (ParserConfigurationException | SAXException | IOException | beaver.Parser.Exception e) {
@@ -39,7 +39,7 @@ aspect ToolSpecificsParser{
                 }
             }
 
-            return new Root();
+            return new InputSignalClause();
         }
 
         public static CommunicatorInformation getCommunicatorInformationFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
@@ -85,12 +85,12 @@ aspect ToolSpecificsParser{
             return ci;
         }
 
-        public static String getLocationFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+        public static String getNodeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
 
             if (toolInfos.getNumChild() > 0) {
                 try {
                     Document doc = parseToolSpecifics(toolInfos);
-                    org.w3c.dom.NodeList locationList = doc.getElementsByTagName(PnmlConstants.LOCATION_KEY);
+                    org.w3c.dom.NodeList locationList = doc.getElementsByTagName(PnmlConstants.NODE_KEY);
 
                     if (locationList.getLength() > 0 && locationList.item(0) != null) {
                         return locationList.item(0).getTextContent();
diff --git a/src/main/jastadd/base/transforming/PnmlSlicer.jadd b/src/main/jastadd/base/transforming/PnmlSlicer.jadd
index 15408cb7e8925a0b5375f9f4b5404301d691878f..18d1caa643782c171b7326b25be9f8632385c3c0 100644
--- a/src/main/jastadd/base/transforming/PnmlSlicer.jadd
+++ b/src/main/jastadd/base/transforming/PnmlSlicer.jadd
@@ -23,7 +23,7 @@ aspect PnmlSlicer {
             }
 
             for (Place p : petriNet.allPlaces()) {
-                if (!p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(subnet)) {
+                if (!p.asDinerosPlace().getStaticPlaceInformation().getSubNet().equals(subnet)) {
                     p.removeSelf();
                 }
             }
@@ -35,7 +35,7 @@ aspect PnmlSlicer {
             }
 
             for (Transition t : petriNet.allTransitions()) {
-                if (!t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet)) {
+                if (!t.asDinerosTransition().getStaticTransitionInformation().getSubNet().equals(subnet)) {
                     t.removeSelf();
                 }
             }
@@ -81,7 +81,7 @@ aspect PnmlSlicer {
                 return false;
             }
 
-            return pn.getPlaceFromPlaceNode(p).asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(subnet);
+            return pn.getPlaceFromPlaceNode(p).asDinerosPlace().getStaticPlaceInformation().getSubNet().equals(subnet);
         }
 
         private static boolean isTransitionInSubnet(TransitionNode t, PetriNet pn, String subnet) {
@@ -90,7 +90,7 @@ aspect PnmlSlicer {
                 return false;
             }
 
-            return pn.getTransitionFromTransitionNode(t).asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet);
+            return pn.getTransitionFromTransitionNode(t).asDinerosTransition().getStaticTransitionInformation().getSubNet().equals(subnet);
         }
     }
 }
\ No newline at end of file
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 102a832c3dca4df97e0efaff4fbb880b426fbbeb..38ba672e8bd747c68af8935d6fcdc4c4256d1897 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
@@ -5,5 +5,10 @@ public class Main {
     public static void main(String[] args) {
 
         // Nothing to to here
+
+        // TODO: update clauses
+        // TODO: fix parsing
+        // TODO: fix export
+        // TODO: read input signal defs (net level)
     }
 }