--- a/src/DIF/RA/RAListeners.cc
+++ b/src/DIF/RA/RAListeners.cc
@@ -17,7 +17,6 @@
 
 #include <RAListeners.h>
 
-#include "RMTQueue.h"
 
 RAListeners::RAListeners(RABase* nra) : ra(nra)
 {
@@ -44,7 +43,7 @@
 void LisRAAllocResPos::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
 {
     Flow* flow = dynamic_cast<Flow*>(obj);
-    if (flow)
+    if (flow && !flow->isDdtFlag())
     {
         ra->postNFlowAllocation(flow);
     }
@@ -58,7 +57,7 @@
 void LisRACreAllocResPos::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
 {
     Flow* flow = dynamic_cast<Flow*>(obj);
-    if (flow)
+    if (flow && !flow->isDdtFlag())
     {
         ra->postNFlowAllocation(flow);
     }
@@ -71,50 +70,40 @@
 void LisRACreResPosi::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
 {
     Flow* flow = dynamic_cast<Flow*>(obj);
-    if (flow)
+    const APN& dstApn = flow->getDstApni().getApn();
+    unsigned short qosId = flow->getConId().getQoSId();
+
+    NM1FlowTableItem* item = ra->getFlowTable()->findFlowByDstApni(dstApn.getName(), qosId);
+    if (item != NULL)
     {
-        ra->postNM1FlowAllocation(flow);
+        ra->postNM1FlowAllocation(item);
     }
     else
     {
-        EV << "RAListener received unknown object!" << endl;
+        return;
     }
 }
 
 void LisEFCPStopSending::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
 {
     Flow* flow = dynamic_cast<Flow*>(obj);
-    if (flow)
+    NM1FlowTableItem* item = ra->getFlowTable()->lookup(flow);
+
+    if (item)
     {
-        ra->blockNM1PortOutput(flow);
-    }
-    else
-    {
-        EV << "RAListener received unknown object!" << endl;
+        ra->blockNM1PortOutput(item);
     }
 }
 
 void LisEFCPStartSending::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
 {
     Flow* flow = dynamic_cast<Flow*>(obj);
-    if (flow)
+    NM1FlowTableItem* item = ra->getFlowTable()->lookup(flow);
+
+    if (item)
     {
-        ra->unblockNM1PortOutput(flow);
+        ra->unblockNM1PortOutput(item);
     }
-    else
-    {
-        EV << "RAListener received unknown object!" << endl;
-    }
-}
-
-void LisRMTPortDrainDisable::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
-{
-    ra->blockNM1PortInput(obj);
-}
-
-void LisRMTPortDrainEnable::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
-{
-    ra->unblockNM1PortInput(obj);
 }
 
 void LisRMTSlowdownRequest::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)