diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c
index a8ac24144b951047294b4bcdd388801868e0bd46..848c10b6fa0462f32e53bd1d64548ba95ffaf5ce 100644
--- a/openair2/ENB_APP/enb_agent_common.c
+++ b/openair2/ENB_APP/enb_agent_common.c
@@ -134,7 +134,7 @@ int enb_agent_hello(uint32_t xid, const void *params, Protocol__ProgranMessage *
 }
 
 
-int enb_agent_destroy_hello_message(Protocol__ProgranMessage *msg) {
+int enb_agent_destroy_hello(Protocol__ProgranMessage *msg) {
   
   if(msg->msg_case != PROTOCOL__PROGRAN_MESSAGE__MSG_HELLO_MSG)
     goto error;
diff --git a/openair2/ENB_APP/enb_agent_common.h b/openair2/ENB_APP/enb_agent_common.h
index 5aac604c1e96dd332542f6fbd59303f7edaa7578..3bb6596f2e8a851d390e6caf1923e00b17542760 100644
--- a/openair2/ENB_APP/enb_agent_common.h
+++ b/openair2/ENB_APP/enb_agent_common.h
@@ -53,6 +53,10 @@ typedef int (*enb_agent_message_decoded_callback)(
 	Protocol__ProgranMessage **msg
 );
 
+typedef int (*enb_agent_message_destruction_callback)(
+	Protocol__ProgranMessage *msg
+);
+
 typedef int32_t  err_code_t; 
 
 int enb_agent_serialize_message(Protocol__ProgranMessage *msg, void **buf, int *size);
diff --git a/openair2/ENB_APP/enb_agent_handler.c b/openair2/ENB_APP/enb_agent_handler.c
index 9a37d01fc1661750d610150f299678c292fc6176..5049e669e935fb68d7fb7486a90ac8264df4e51f 100644
--- a/openair2/ENB_APP/enb_agent_handler.c
+++ b/openair2/ENB_APP/enb_agent_handler.c
@@ -50,6 +50,15 @@ enb_agent_message_decoded_callback messages_callback[][3] = {
 
 };
 
+enb_agent_message_destruction_callback message_destruction_callback[] = {
+  enb_agent_destroy_hello,
+  enb_agent_destroy_echo_request,
+  enb_agent_destroy_echo_reply,
+  0, /*No stats request message is created in the agent. No need for a callback*/
+  enb_agent_mac_destroy_stats_reply,
+  
+};
+
 static const char *enb_agent_direction2String[] = {
   "", /* not_set  */
   "originating message", /* originating message */
@@ -114,7 +123,7 @@ void * enb_agent_send_message(uint32_t xid,
   
   // free the msg --> later keep this in the data struct and just update the values
   //TODO call proper destroy function
-  //  enb_agent_mac_destroy_stats_reply(msg);
+  err_code = ((*message_destruction_callback[msg->msg_case-1])(msg));
   
   DevAssert(buffer !=NULL);
 
diff --git a/openair2/ENB_APP/enb_agent_mac.c b/openair2/ENB_APP/enb_agent_mac.c
index e1c465105a63b13d8b183534bda8d9afa3136d1f..3c188881fb23526a3db0987f265b1708c58f7778 100644
--- a/openair2/ENB_APP/enb_agent_mac.c
+++ b/openair2/ENB_APP/enb_agent_mac.c
@@ -73,12 +73,16 @@ int enb_agent_mac_handle_stats(uint32_t xid, const void *params, Protocol__Progr
     if (comp_req->report_frequency == PROTOCOL__PRP_STATS_REPORT_FREQ__PRSRF_PERIODICAL) {
       //TODO: Must create a periodic report. Implement once the
       // timer functionality is supported
-      return -1;
+      *msg = NULL;
+      return 0;
     } else if (comp_req->report_frequency == PROTOCOL__PRP_STATS_REPORT_FREQ__PRSRF_CONTINUOUS) {
       //TODO: Must create an event based report mechanism
-      return -1;
+      *msg = NULL;
+      return 0;
     } else if (comp_req->report_frequency == PROTOCOL__PRP_STATS_REPORT_FREQ__PRSRF_OFF) {
       //TODO: Must implement to deactivate the event based reporting
+      *msg = NULL;
+      return 0;
     } else { //One-off reporting
       //Set the proper flags
       ue_flags = comp_req->ue_report_flags;