--- a/src/DIF/RIB/RIBd.cc
+++ b/src/DIF/RIB/RIBd.cc
@@ -35,84 +35,18 @@
 const char* VAL_FLREQ           = "Request  ";
 const char* VAL_FLREQPOSI       = "Response+  ";
 const char* VAL_FLREQNEGA       = "Response-  ";
-const char* MSG_FWDUPDATE       = "FwdUpdate";
+const char* MSG_ROUTINGUPDATE       = "RoutingUpdate";
 
 Define_Module(RIBd);
 
 void RIBd::initialize() {
     //Init signals and listeners
     initSignalsAndListeners();
-    //Init CDAP gates and connections
-    initCdapBindings();
     //Init MyAddress
     initMyAddress();
 }
 
 void RIBd::handleMessage(cMessage *msg) {
-
-}
-
-void RIBd::initCdapBindings() {
-
-    //Get RIBDaemon gates
-    cModule* RibD = this->getParentModule();
-    cGate* gRibdIn = RibD->gateHalf(GATE_RMTIO, cGate::INPUT);
-    cGate* gRibdOut = RibD->gateHalf(GATE_RMTIO, cGate::OUTPUT);
-
-    //CDAPParent Module gates
-    cModule* Cdap = RibD->getSubmodule(MOD_CDAP);
-    cGate* gCdapParentIn;
-    cGate* gCdapParentOut;
-    Cdap->getOrCreateFirstUnconnectedGatePair(GATE_SOUTHIO, false, true, *&gCdapParentIn, *&gCdapParentOut);
-
-    //CDAPSplitter gates
-    cModule* CdapSplit = Cdap->getSubmodule(MOD_CDAPSPLIT);
-    cGate* gSplitIn;
-    cGate* gSplitOut;
-    CdapSplit->getOrCreateFirstUnconnectedGatePair(GATE_SOUTHIO, false, true, *&gSplitIn, *&gSplitOut);
-    cGate* gSplitCaceIn;
-    cGate* gSplitCaceOut;
-    CdapSplit->getOrCreateFirstUnconnectedGatePair(GATE_CACEIO, false, true, *&gSplitCaceIn, *&gSplitCaceOut);
-    cGate* gSplitAuthIn;
-    cGate* gSplitAuthOut;
-    CdapSplit->getOrCreateFirstUnconnectedGatePair(GATE_AUTHIO, false, true, *&gSplitAuthIn, *&gSplitAuthOut);
-    cGate* gSplitCdapIn;
-    cGate* gSplitCdapOut;
-    CdapSplit->getOrCreateFirstUnconnectedGatePair(GATE_CDAPIO, false, true, *&gSplitCdapIn, *&gSplitCdapOut);
-
-    //CACE Module gates
-    cModule* CdapCace = Cdap->getSubmodule(MOD_CDAPCACE);
-    cGate* gCaceIn;
-    cGate* gCaceOut;
-    CdapCace->getOrCreateFirstUnconnectedGatePair(GATE_SPLITIO, false, true, *&gCaceIn, *&gCaceOut);
-
-    //AUTH Module gates
-    cModule* CdapAuth = Cdap->getSubmodule(MOD_CDAPAUTH);
-    cGate* gAuthIn;
-    cGate* gAuthOut;
-    CdapAuth->getOrCreateFirstUnconnectedGatePair(GATE_SPLITIO, false, true, *&gAuthIn, *&gAuthOut);
-
-    //CDAP Module gates
-    cModule* CdapCdap = Cdap->getSubmodule(MOD_CDAPCDAP);
-    cGate* gCdapIn;
-    cGate* gCdapOut;
-    CdapCdap->getOrCreateFirstUnconnectedGatePair(GATE_SPLITIO, false, true, *&gCdapIn, *&gCdapOut);
-
-    //Connect gates together
-    gRibdIn->connectTo(gCdapParentIn);
-    gCdapParentIn->connectTo(gSplitIn);
-
-    gSplitOut->connectTo(gCdapParentOut);
-    gCdapParentOut->connectTo(gRibdOut);
-
-    gSplitCaceOut->connectTo(gCaceIn);
-    gCaceOut->connectTo(gSplitCaceIn);
-
-    gSplitAuthOut->connectTo(gAuthIn);
-    gAuthOut->connectTo(gSplitAuthIn);
-
-    gSplitCdapOut->connectTo(gCdapIn);
-    gCdapOut->connectTo(gSplitCdapIn);
 
 }
 
@@ -257,7 +191,8 @@
     sigRIBDCreFlow       = registerSignal(SIG_RIBD_CreateFlow);
     sigRIBDCreResFloPosi = registerSignal(SIG_RIBD_CreateFlowResponsePositive);
     sigRIBDCreResFloNega = registerSignal(SIG_RIBD_CreateFlowResponseNegative);
-    sigRIBDFwdUpdateRecv = registerSignal(SIG_RIBD_ForwardingUpdateReceived);
+   // sigRIBDFwdUpdateRecv = registerSignal(SIG_RIBD_ForwardingUpdateReceived);
+    sigRIBDRoutingUpdateRecv = registerSignal(SIG_RIBD_RoutingUpdateReceived);
     sigRIBDCongNotif     = registerSignal(SIG_RIBD_CongestionNotification);
 
     //Signals that this module is processing
@@ -293,8 +228,8 @@
     lisRIBDCreFloNega = new LisRIBDCreFloNega(this);
     catcher2->subscribe(SIG_RA_CreateFlowNegative, lisRIBDCreFloNega);
 
-    lisRIBDFwdInfoUpdate = new LisRIBDFwdInfoUpdate(this);
-    catcher2->subscribe(SIG_PDUFTG_FwdInfoUpdate, lisRIBDFwdInfoUpdate);
+    lisRIBDRoutingUpdate = new LisRIBDRoutingUpdate(this);
+    catcher2->subscribe(SIG_RIBD_RoutingUpdate, lisRIBDRoutingUpdate);
 
     lisRIBDCongNotif = new LisRIBDCongesNotif(this);
     catcher2->subscribe(SIG_RA_InvokeSlowdown, lisRIBDCongNotif);
@@ -371,8 +306,12 @@
 }
 
 void RIBd::signalizeSendData(CDAPMessage* msg) {
-    //Setup handle which is for RIBd always 0
-    msg->setHandle(0);
+    //Check dstAddress
+    if (msg->getDstAddr() == Address::UNSPECIFIED_ADDRESS) {
+        EV << "Destination address cannot be UNSPECIFIED!" << endl;
+        return;
+    }
+
     msg->setBitLength(msg->getBitLength() + msg->getHeaderBitLength());
     //Pass message to CDAP
     EV << "Emits SendData signal for message " << msg->getName() << endl;
@@ -528,28 +467,28 @@
     EV << " with object '" << object.objectClass << "'" << endl;
 
     //CreateRequest Flow
-    if (dynamic_cast<PDUFTGUpdate *>(object.objectVal))
+    if (dynamic_cast<IntRoutingUpdate *>(object.objectVal))
     {
-        PDUFTGUpdate * update = (check_and_cast<PDUFTGUpdate *>(object.objectVal));
+        IntRoutingUpdate * update = (check_and_cast<IntRoutingUpdate *>(object.objectVal));
 
         /* Signal that an update obj has been received. */
-        emit(sigRIBDFwdUpdateRecv, update);
-    }
-}
-
-void RIBd::receiveForwardingInfoUpdateFromPDUFTG(PDUFTGUpdate * info)
+        emit(sigRIBDRoutingUpdateRecv, update);
+    }
+}
+
+void RIBd::receiveRoutingUpdateFromRouting(IntRoutingUpdate * info)
 {
     EV << getFullPath() << " Forwarding update to send to " << info->getDestination();
 
     /* Emits the CDAP message. */
 
-    CDAP_M_Write * cdapm = new CDAP_M_Write(MSG_FWDUPDATE);
+    CDAP_M_Write * cdapm = new CDAP_M_Write(MSG_ROUTINGUPDATE);
     std::ostringstream os;
     object_t flowobj;
 
     /* Prepare the object to send. */
 
-    os << "FwdUpdateTo" << info->getDestination();
+    os << "RoutingUpdateTo" << info->getDestination();
 
     flowobj.objectClass = info->getClassName();
     flowobj.objectName  = os.str();