diff --git a/openair2/ENB_APP/enb_agent.c b/openair2/ENB_APP/enb_agent.c
index 01eb61fc0b2f54082fcc8792fcb27f327ef0d9f5..3c9ad7d24d726ec317f87c54a290d442c05a89d1 100644
--- a/openair2/ENB_APP/enb_agent.c
+++ b/openair2/ENB_APP/enb_agent.c
@@ -140,7 +140,7 @@ void *receive_thread(void *args) {
     LOG_D(ENB_AGENT,"received message with size %d\n", size);
   
     
-    msg=enb_agent_handle_message(d->mod_id, d->rx_xid, data, size);
+    msg=enb_agent_handle_message(d->mod_id, data, size);
 
     free(data);
     
@@ -149,7 +149,7 @@ void *receive_thread(void *args) {
   
     // check if there is something to send back to the controller
     if (msg != NULL){
-      data=enb_agent_send_message(d->tx_xid,msg,&size);
+      data=enb_agent_send_message(msg,&size);
      
       if (message_put(d->tx_mq, data, size, priority)){
 	err_code = PROTOCOL__PROGRAN_ERR__MSG_ENQUEUING;
diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c
index c719777aaf7081c3718db4cb532c7ee016d54da7..0fe2c8e1ac17e86316b042baaf5ef9feefe39b99 100644
--- a/openair2/ENB_APP/enb_agent_common.c
+++ b/openair2/ENB_APP/enb_agent_common.c
@@ -102,9 +102,11 @@ int prp_create_header(xid_t xid, Protocol__PrpType type,  Protocol__PrpHeader **
 }
 
 
-int enb_agent_hello(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg) {
+int enb_agent_hello(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg) {
  
   Protocol__PrpHeader *header;
+  /*TODO: Need to set random xid or xid from received hello message*/
+  xid_t xid = 1;
   if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_HELLO, &header) != 0)
     goto error;
 
@@ -154,8 +156,10 @@ int enb_agent_destroy_hello(Protocol__ProgranMessage *msg) {
 }
 
 
-int enb_agent_echo_request(mid_t mod_id, xid_t xid, const void* params, Protocol__ProgranMessage **msg) {
+int enb_agent_echo_request(mid_t mod_id, const void* params, Protocol__ProgranMessage **msg) {
   Protocol__PrpHeader *header;
+  /*TODO: Need to set a random xid*/
+  xid_t xid = 1;
   if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_ECHO_REQUEST, &header) != 0)
     goto error;
 
@@ -203,7 +207,13 @@ int enb_agent_destroy_echo_request(Protocol__ProgranMessage *msg) {
 
 
 
-int enb_agent_echo_reply(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg) {
+int enb_agent_echo_reply(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg) {
+  
+  xid_t xid;
+  Protocol__ProgranMessage *input = (Protocol__ProgranMessage *)params;
+  Protocol__PrpEchoRequest *echo_req = input->echo_request_msg;
+  xid = (echo_req->header)->xid;
+
   Protocol__PrpHeader *header;
   if (prp_create_header(xid, PROTOCOL__PRP_TYPE__PRPT_ECHO_REPLY, &header) != 0)
     goto error;
diff --git a/openair2/ENB_APP/enb_agent_common.h b/openair2/ENB_APP/enb_agent_common.h
index 9c5f4044fa8b079ad1b163fcb810a8461cefaff8..f918914f926de3c5f00685ff468c4b88bc0f1279 100644
--- a/openair2/ENB_APP/enb_agent_common.h
+++ b/openair2/ENB_APP/enb_agent_common.h
@@ -58,8 +58,7 @@
 
 typedef int (*enb_agent_message_decoded_callback)(
 	mid_t mod_id,
-        xid_t xid,
-	const void *params,
+       	const void *params,
 	Protocol__ProgranMessage **msg
 );
 
@@ -72,23 +71,21 @@ int enb_agent_deserialize_message(void *data, int size, Protocol__ProgranMessage
 
 int prp_create_header(xid_t xid, Protocol__PrpType type, Protocol__PrpHeader **header);
 
-int enb_agent_hello(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg);
+int enb_agent_hello(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg);
 int enb_agent_destroy_hello(Protocol__ProgranMessage *msg);
 
-int enb_agent_echo_request(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg);
+int enb_agent_echo_request(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg);
 int enb_agent_destroy_echo_request(Protocol__ProgranMessage *msg);
 
-int enb_agent_echo_reply(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg);
+int enb_agent_echo_reply(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg);
 int enb_agent_destroy_echo_reply(Protocol__ProgranMessage *msg);
 
 
 Protocol__ProgranMessage* enb_agent_handle_message (mid_t mod_id, 
-						    xid_t xid, 
 						    uint8_t *data, 
 						    uint32_t size);
 
-void * enb_agent_send_message(xid_t xid, 
-			      Protocol__ProgranMessage *msg, 
+void * enb_agent_send_message(Protocol__ProgranMessage *msg, 
 			      uint32_t * size);
 
 
diff --git a/openair2/ENB_APP/enb_agent_handler.c b/openair2/ENB_APP/enb_agent_handler.c
index 1b8457d474a037ccd0a07cb1a9c22694f9150d2e..8c2b9e010a420538fbeb5a506163086f3999c74b 100644
--- a/openair2/ENB_APP/enb_agent_handler.c
+++ b/openair2/ENB_APP/enb_agent_handler.c
@@ -68,7 +68,6 @@ static const char *enb_agent_direction2String[] = {
 
 
 Protocol__ProgranMessage* enb_agent_handle_message (mid_t mod_id,
-						    xid_t xid, 
 						    uint8_t *data, 
 						    uint32_t size){
   
@@ -93,7 +92,7 @@ Protocol__ProgranMessage* enb_agent_handle_message (mid_t mod_id,
 
   }
 
-  err_code = ((*messages_callback[decoded_message->msg_case-1][decoded_message->msg_dir-1])(mod_id, xid, (void *) decoded_message, &reply_message));
+  err_code = ((*messages_callback[decoded_message->msg_case-1][decoded_message->msg_dir-1])(mod_id, (void *) decoded_message, &reply_message));
   if ( err_code < 0 ){
     goto error;
   }
@@ -110,8 +109,7 @@ error:
 
 
 
-void * enb_agent_send_message(xid_t xid, 
-			      Protocol__ProgranMessage *msg, 
+void * enb_agent_send_message(Protocol__ProgranMessage *msg, 
 			      uint32_t * size){
 
   void * buffer;
diff --git a/openair2/ENB_APP/enb_agent_mac.c b/openair2/ENB_APP/enb_agent_mac.c
index 4801d2168623dee7848a1a2f6c3ed278a51484d2..d2504e4decaec17de56a6cec26b1bde5baa7ddd4 100644
--- a/openair2/ENB_APP/enb_agent_mac.c
+++ b/openair2/ENB_APP/enb_agent_mac.c
@@ -38,7 +38,7 @@
 
 #include "log.h"
 
-int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg){
+int enb_agent_mac_handle_stats(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg){
   
   // TODO: Must deal with sanitization of input
   // TODO: Must check if RNTIs and cell ids of the request actually exist
@@ -47,6 +47,7 @@ int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Prot
   void *buffer;
   int size;
   err_code_t err_code;
+  xid_t xid;
   
   //TODO: We do not deal with multiple CCs at the moment and eNB id is 0 
   int cc_id = 0;
@@ -63,6 +64,7 @@ int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Prot
   Protocol__ProgranMessage *input = (Protocol__ProgranMessage *)params;
 
   Protocol__PrpStatsRequest *stats_req = input->stats_request_msg;
+  xid = (stats_req->header)->xid;
 
   // Check the type of request that is made
   switch(stats_req->body_case) {
diff --git a/openair2/ENB_APP/enb_agent_mac.h b/openair2/ENB_APP/enb_agent_mac.h
index 65841118258cfe76e1b1f7194a1aea97ba5ba4e8..569eb51e5e8f41078a663ebf221b8f866a2ded2f 100644
--- a/openair2/ENB_APP/enb_agent_mac.h
+++ b/openair2/ENB_APP/enb_agent_mac.h
@@ -70,7 +70,7 @@ typedef struct {
 } report_config_t;
 
 
-int enb_agent_mac_handle_stats(mid_t mod_id, xid_t xid, const void *params, Protocol__ProgranMessage **msg);
+int enb_agent_mac_handle_stats(mid_t mod_id, const void *params, Protocol__ProgranMessage **msg);
 
 int enb_agent_mac_stats_reply(mid_t mod_id, xid_t xid, const report_config_t *report_config, Protocol__ProgranMessage **msg);