diff --git a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java
index b978a9a192161ca4521fb952d3bb65cede5695d8..f1173901d08fbb1cf42c99e49d6f3de9e6e3c949 100644
--- a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java
+++ b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java
@@ -171,8 +171,8 @@ public class TaskNetworkInterface extends TMLTask {
             addElement(intermediateSeq, ispktChoice);
 
             TMLStopState endOfIspkt = new TMLStopState("endOfIspkt", referenceObject);
-            addElement(testingEvt, endOfIspkt);
-            testingEvt.addGuard("(ispkt" + i + " > 0)");
+            addElement(ispktChoice, endOfIspkt);
+            ispktChoice.addGuard("(ispkt" + i + " > 0)");
 
             TMLWaitEvent waitingForStartPacket = new TMLWaitEvent("WaitingStartPacket", referenceObject);
             waitingForStartPacket.setEvent(inputEventsFromMUX.get(i));
@@ -235,56 +235,138 @@ public class TaskNetworkInterface extends TMLTask {
             waitingForFeedback.setEvent(inputFeedbackEvents.get(i));
             addElement(sendingSample, waitingForFeedback);
 
-            TMLChoice packetLengthChoice = new TMLChoice("PacketLengthChoice",referenceObject);
-            addElement(waitingForFeedback, packetLengthChoice);
-
-            // Left branch
-            TMLSendEvent sendEvtpktin = new TMLSendEvent("SendEvtPktin", referenceObject);
-            sendEvtpktin.setEvent(outputEvent);
-            sendEvtpktin.addParam("pktlen" + i);
-            sendEvtpktin.addParam("dst" + i);
-            sendEvtpktin.addParam("vc" + i);
-            sendEvtpktin.addParam("0");
-            addElement(packetLengthChoice, sendEvtpktin);
-            packetLengthChoice.addGuard("i" + i + " < pktlen" + i + " - 1");
-
-            TMLActionState asOnI = new TMLActionState("ActionstateOnI", referenceObject);
-            asOnI.setAction("i" + i + " = i" + i + " 1");
-            addElement(sendEvtpktin, asOnI);
-
-            TMLStopState endOfLB = new TMLStopState("EndOfLB", referenceObject);
-            addElement(asOnI, endOfLB);
-
-            // Middle branch
-            TMLActionState loopExitMB = new TMLActionState("loopExitMB", referenceObject);
-            loopExitMB.setAction("loopexit = 1");
-            addElement(packetLengthChoice, loopExitMB);
-            packetLengthChoice.addGuard("i" + i + " == pktlen" + i);
-
-            TMLActionState isPktMB = new TMLActionState("isPktMB", referenceObject);
-            isPktMB.setAction("ispkt" + i + " = 0");
-            addElement(loopExitMB, isPktMB);
-
-            TMLStopState endOfMB = new TMLStopState("endOfMB", referenceObject);
-            addElement(isPktMB, endOfMB);
-
-
-            // Right branch
-            TMLSendEvent sendEvtpktinRB = new TMLSendEvent("sendEvtpktinRB", referenceObject);
-            sendEvtpktinRB.setEvent(outputEvent);
-            sendEvtpktinRB.addParam("pktlen" + i);
-            sendEvtpktinRB.addParam("dst" + i);
-            sendEvtpktinRB.addParam("vc" + i);
-            sendEvtpktinRB.addParam("1");
-            addElement(packetLengthChoice, sendEvtpktinRB);
-            packetLengthChoice.addGuard("i" + i + " == pktlen" + i + " - 1");
-
-            TMLActionState asOnIRB = new TMLActionState("asOnIRB", referenceObject);
-            asOnI.setAction("i" + i + " = i" + i + " 1");
-            addElement(sendEvtpktinRB, asOnIRB);
-
-            TMLStopState endOfRB = new TMLStopState("endOfRB", referenceObject);
-            addElement(asOnIRB, endOfRB);
+            if (i == 0) {
+
+
+                TMLChoice packetLengthChoice = new TMLChoice("PacketLengthChoice", referenceObject);
+                addElement(waitingForFeedback, packetLengthChoice);
+
+                // Left branch
+                TMLSendEvent sendEvtpktin = new TMLSendEvent("SendEvtPktin", referenceObject);
+                sendEvtpktin.setEvent(outputEvent);
+                sendEvtpktin.addParam("pktlen" + i);
+                sendEvtpktin.addParam("dst" + i);
+                sendEvtpktin.addParam("vc" + i);
+                sendEvtpktin.addParam("0");
+                addElement(packetLengthChoice, sendEvtpktin);
+                packetLengthChoice.addGuard("i" + i + " < pktlen" + i + " - 1");
+
+                TMLActionState asOnI = new TMLActionState("ActionstateOnI", referenceObject);
+                asOnI.setAction("i" + i + " = i" + i + " 1");
+                addElement(sendEvtpktin, asOnI);
+
+                TMLStopState endOfLB = new TMLStopState("EndOfLB", referenceObject);
+                addElement(asOnI, endOfLB);
+
+                // Middle branch
+                TMLActionState loopExitMB = new TMLActionState("loopExitMB", referenceObject);
+                loopExitMB.setAction("loopexit = 1");
+                addElement(packetLengthChoice, loopExitMB);
+                packetLengthChoice.addGuard("i" + i + " == pktlen" + i);
+
+                TMLActionState isPktMB = new TMLActionState("isPktMB", referenceObject);
+                isPktMB.setAction("ispkt" + i + " = 0");
+                addElement(loopExitMB, isPktMB);
+
+                TMLStopState endOfMB = new TMLStopState("endOfMB", referenceObject);
+                addElement(isPktMB, endOfMB);
+
+
+                // Right branch
+                TMLSendEvent sendEvtpktinRB = new TMLSendEvent("sendEvtpktinRB", referenceObject);
+                sendEvtpktinRB.setEvent(outputEvent);
+                sendEvtpktinRB.addParam("pktlen" + i);
+                sendEvtpktinRB.addParam("dst" + i);
+                sendEvtpktinRB.addParam("vc" + i);
+                sendEvtpktinRB.addParam("1");
+                addElement(packetLengthChoice, sendEvtpktinRB);
+                packetLengthChoice.addGuard("i" + i + " == pktlen" + i + " - 1");
+
+                TMLActionState asOnIRB = new TMLActionState("asOnIRB", referenceObject);
+                asOnIRB.setAction("i" + i + " = i" + i + " 1");
+                addElement(sendEvtpktinRB, asOnIRB);
+
+                TMLStopState endOfRB = new TMLStopState("endOfRB", referenceObject);
+                addElement(asOnIRB, endOfRB);
+            } else {
+                TMLChoice packetLengthChoice1 = new TMLChoice("PacketLengthChoice1", referenceObject);
+                addElement(waitingForFeedback, packetLengthChoice1);
+
+                // Right branch
+                TMLActionState loopexitTo1= new TMLActionState("loopexitTo1", referenceObject);
+                loopexitTo1.setAction("loopexit = 1");
+                addElement(packetLengthChoice1, loopexitTo1);
+                packetLengthChoice1.addGuard("i" + i + " = pktlen" + i);
+
+
+                TMLActionState ispktResetAction = new TMLActionState("ispktResetAction", referenceObject);
+                ispktResetAction.setAction("ispkt" + i + " = 0");
+                addElement(loopexitTo1, ispktResetAction);
+
+                TMLStopState endOfRB1 = new TMLStopState("endOfRB1", referenceObject);
+                addElement(ispktResetAction, endOfRB1);
+
+                // TMLSequence of left branch
+                TMLSequence seqLB = new TMLSequence("seqLB", referenceObject);
+                addElement(packetLengthChoice1, seqLB);
+                packetLengthChoice1.addGuard("i" + i + " < pktlen" + i);
+
+                //LB of seqLB
+                TMLChoice choiceLBSeq = new TMLChoice("choiceLBSeq", referenceObject);
+                addElement(seqLB, choiceLBSeq);
+
+                TMLSendEvent sendEvtpktin1 = new TMLSendEvent("sendEvtpktin1", referenceObject);
+                sendEvtpktin1.setEvent(outputEvent);
+                sendEvtpktin1.addParam("pktlen" + i);
+                sendEvtpktin1.addParam("dst" + i);
+                sendEvtpktin1.addParam("vc" + i);
+                sendEvtpktin1.addParam("0");
+                addElement(choiceLBSeq, sendEvtpktin1);
+                choiceLBSeq.addGuard("i" + i + " < pktlen" + i + " - 1");
+
+                TMLActionState asOnI1 = new TMLActionState("ActionstateOnI1", referenceObject);
+                asOnI1.setAction("i" + i + " = i" + i + " 1");
+                addElement(sendEvtpktin1, asOnI1);
+
+                TMLStopState endOfLB1 = new TMLStopState("endOfLB1", referenceObject);
+                addElement(asOnI1, endOfLB1);
+
+                TMLSendEvent sendEvtpktinRB1 = new TMLSendEvent("sendEvtpktinRB1", referenceObject);
+                sendEvtpktinRB1.setEvent(outputEvent);
+                sendEvtpktinRB1.addParam("pktlen" + i);
+                sendEvtpktinRB1.addParam("dst" + i);
+                sendEvtpktinRB1.addParam("vc" + i);
+                sendEvtpktinRB1.addParam("1");
+                addElement(choiceLBSeq, sendEvtpktinRB1);
+                choiceLBSeq.addGuard("i" + i + " == pktlen" + i + " - 1");
+
+                TMLActionState asOnIRB1 = new TMLActionState("asOnIRB1", referenceObject);
+                asOnIRB1.setAction("i" + i + " = i" + i + " 1");
+                addElement(sendEvtpktinRB1, asOnIRB1);
+
+                TMLStopState endOfRB1SEQ = new TMLStopState("endOfRB1SEQ", referenceObject);
+                addElement(asOnIRB1, endOfRB1SEQ);
+
+                // Right branch of seq
+                TMLNotifiedEvent notifiedEventPrio = new TMLNotifiedEvent("notifiedEventPrio", referenceObject);
+                notifiedEventPrio.setEvent(inputEventsFromMUX.get(i-1));
+                notifiedEventPrio.setVariable("higher_prio");
+                addElement(seqLB, notifiedEventPrio);
+
+                TMLChoice testPrio = new TMLChoice("testPrio", referenceObject);
+                addElement(notifiedEventPrio, testPrio);
+
+                TMLActionState loopexitPrio= new TMLActionState("loopexitPrio", referenceObject);
+                loopexitPrio.setAction("loopexit = 1");
+                addElement(testPrio, loopexitPrio);
+                testPrio.addGuard("higher_prio > 0");
+
+                addElement(loopexitPrio, new TMLStopState("EndOfHigherPrio", referenceObject));
+
+                addElement(testPrio, new TMLStopState("NoHigherPrio", referenceObject));
+                testPrio.addGuard("higher_prio == 0");
+
+            }