diff --git a/common/utils/collection/hashtable/hashtable.c b/common/utils/collection/hashtable/hashtable.c
index 0ec4e08024f48896661c07d961131229766c8fed..ba2686c7187b0fc38847110c6159840d42e69925 100755
--- a/common/utils/collection/hashtable/hashtable.c
+++ b/common/utils/collection/hashtable/hashtable.c
@@ -172,19 +172,14 @@ hashtable_rc_t hashtable_apply_funct_on_elements (hash_table_t *const hashtblP,
     return HASH_TABLE_OK;
 }
 //-------------------------------------------------------------------------------------------------------------------------------
-hashtable_rc_t hashtable_dump_content (
-		const hash_table_t * const hashtblP,
-		char               * const buffer_pP,
-		int                * const remaining_bytes_in_buffer_pP)
+hashtable_rc_t hashtable_dump_content (const hash_table_t * const hashtblP, char * const buffer_pP, int * const remaining_bytes_in_buffer_pP )
 //-------------------------------------------------------------------------------------------------------------------------------
 {
     hash_node_t  *node         = NULL;
     unsigned int  i            = 0;
     unsigned int  num_elements = 0;
-    int           rc;
-
     if (hashtblP == NULL) {
-        rc = snprintf(
+        *remaining_bytes_in_buffer_pP = snprintf(
                 buffer_pP,
                 *remaining_bytes_in_buffer_pP,
                 "HASH_TABLE_BAD_PARAMETER_HASHTABLE");
@@ -194,18 +189,13 @@ hashtable_rc_t hashtable_dump_content (
         if (hashtblP->nodes[i] != NULL) {
             node=hashtblP->nodes[i];
             while(node) {
-                rc = snprintf(
-                     buffer_pP,
-                     *remaining_bytes_in_buffer_pP,
-                     "Key 0x%"PRIx64" Element %p\n",
-                     node->key,
-                     node->data);
+                *remaining_bytes_in_buffer_pP = snprintf(
+                                buffer_pP,
+                                *remaining_bytes_in_buffer_pP,
+                                "Key 0x%"PRIx64" Element %p\n",
+                                node->key,
+                                node->data);
                 node=node->next;
-                if ((0 > rc) || (*remaining_bytes_in_buffer_pP < rc)) {
-                  fprintf(stderr, "Error while dumping hashtable content");
-                } else {
-                  *remaining_bytes_in_buffer_pP -= rc;
-                }
             }
         }
         i += 1;
@@ -252,10 +242,10 @@ hashtable_rc_t hashtable_insert(hash_table_t * const hashtblP, const hash_key_t
 }
 //-------------------------------------------------------------------------------------------------------------------------------
 /*
- * To free an element from the hash table, we just search for it in the linked list for that hash value,
- * and free it if it is found. If it was not found, it is an error and -1 is returned.
+ * To remove an element from the hash table, we just search for it in the linked list for that hash value,
+ * and remove it if it is found. If it was not found, it is an error and -1 is returned.
  */
-hashtable_rc_t hashtable_free(hash_table_t * const hashtblP, const hash_key_t keyP)
+hashtable_rc_t hashtable_remove(hash_table_t * const hashtblP, const hash_key_t keyP)
 {
     hash_node_t *node, *prevnode=NULL;
     hash_size_t  hash = 0;
@@ -281,36 +271,6 @@ hashtable_rc_t hashtable_free(hash_table_t * const hashtblP, const hash_key_t ke
     }
     return HASH_TABLE_KEY_NOT_EXISTS;
 }
-//-------------------------------------------------------------------------------------------------------------------------------
-/*
- * To remove an element from the hash table, we just search for it in the linked list for that hash value,
- * and remove it if it is found. If it was not found, it is an error and -1 is returned.
- */
-hashtable_rc_t hashtable_remove(hash_table_t * const hashtblP, const hash_key_t keyP, void** dataP)
-{
-    hash_node_t *node, *prevnode=NULL;
-    hash_size_t  hash = 0;
-
-    if (hashtblP == NULL) {
-        return HASH_TABLE_BAD_PARAMETER_HASHTABLE;
-    }
-    hash=hashtblP->hashfunc(keyP)%hashtblP->size;
-    node=hashtblP->nodes[hash];
-    while(node) {
-        if(node->key == keyP) {
-            if(prevnode) prevnode->next=node->next;
-            else hashtblP->nodes[hash]=node->next;
-            *dataP = node->data;
-            free(node);
-            hashtblP->num_elements -= 1;
-            return HASH_TABLE_OK;
-        }
-        prevnode=node;
-        node=node->next;
-    }
-    return HASH_TABLE_KEY_NOT_EXISTS;
-}
-
 //-------------------------------------------------------------------------------------------------------------------------------
 /*
  * Searching for an element is easy. We just search through the linked list for the corresponding hash value.
@@ -348,7 +308,7 @@ hashtable_rc_t hashtable_get(const hash_table_t * const hashtblP, const hash_key
  * If the number of elements are reduced, the hash table will waste memory. That is why we provide a function for resizing the table.
  * Resizing a hash table is not as easy as a realloc(). All hash values must be recalculated and each element must be inserted into its new position.
  * We create a temporary hash_table_t object (newtbl) to be used while building the new hashes.
- * This allows us to reuse hashtable_insert() and hashtable_free(), when moving the elements to the new table.
+ * This allows us to reuse hashtable_insert() and hashtable_remove(), when moving the elements to the new table.
  * After that, we can just free the old table and copy the elements from newtbl to hashtbl.
  */
 
@@ -372,7 +332,7 @@ hashtable_rc_t hashtable_resize(hash_table_t * const hashtblP, const hash_size_t
             next = node->next;
             hashtable_insert(&newtbl, node->key, node->data);
             // Lionel GAUTHIER: BAD CODE TO BE REWRITTEN
-            hashtable_free(hashtblP, node->key);
+            hashtable_remove(hashtblP, node->key);
 
         }
     }
diff --git a/common/utils/collection/hashtable/hashtable.h b/common/utils/collection/hashtable/hashtable.h
index cad3a6e8d81039934d0e4e45f9fb2b149173b1b5..2082e4f85f3c01bba05f73d8fa6b8b56a7e7dadb 100755
--- a/common/utils/collection/hashtable/hashtable.h
+++ b/common/utils/collection/hashtable/hashtable.h
@@ -49,9 +49,6 @@ typedef enum hashtable_return_code_e {
     HASH_TABLE_CODE_MAX
 } hashtable_rc_t;
 
-#define HASH_TABLE_DEFAULT_HASH_FUNC NULL
-#define HASH_TABLE_DEFAULT_FREE_FUNC NULL
-
 
 typedef struct hash_node_s {
     hash_key_t          key;
@@ -75,8 +72,7 @@ hashtable_rc_t  hashtable_is_key_exists (const hash_table_t * const hashtbl, con
 hashtable_rc_t  hashtable_apply_funct_on_elements (hash_table_t * const hashtblP, void funct(hash_key_t keyP, void* dataP, void* parameterP), void* parameterP);
 hashtable_rc_t  hashtable_dump_content (const hash_table_t * const hashtblP, char * const buffer_pP, int * const remaining_bytes_in_buffer_pP );
 hashtable_rc_t  hashtable_insert (hash_table_t * const hashtbl, const hash_key_t key, void *data);
-hashtable_rc_t  hashtable_free (hash_table_t * const hashtbl, const hash_key_t key);
-hashtable_rc_t  hashtable_remove(hash_table_t * const hashtblP, const hash_key_t keyP, void** dataP);
+hashtable_rc_t  hashtable_remove (hash_table_t * const hashtbl, const hash_key_t key);
 hashtable_rc_t  hashtable_get    (const hash_table_t * const hashtbl, const hash_key_t key, void **dataP);
 hashtable_rc_t  hashtable_resize (hash_table_t * const hashtbl, const hash_size_t size);
 
diff --git a/common/utils/collection/hashtable/obj_hashtable.c b/common/utils/collection/hashtable/obj_hashtable.c
index 4d9683ade3e574b7a8aa430ed551a5163e4e3a26..b1d804335f9a9fa32f1db0004246e666617e8ab5 100755
--- a/common/utils/collection/hashtable/obj_hashtable.c
+++ b/common/utils/collection/hashtable/obj_hashtable.c
@@ -30,7 +30,6 @@
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <inttypes.h>
 #include "obj_hashtable.h"
 //-------------------------------------------------------------------------------------------------------------------------------
 /*
@@ -39,11 +38,11 @@
  * This is a simple/naive hash function which adds the key's ASCII char values. It will probably generate lots of collisions on large hash tables.
  */
 
-static hash_size_t def_hashfunc(const void * const keyP, int key_sizeP)
+static hash_size_t def_hashfunc(const void *keyP, int key_sizeP)
 {
     hash_size_t hash=0;
 
-    while(key_sizeP) hash^=((unsigned char*)keyP)[--key_sizeP];
+    while(key_sizeP) hash^=((unsigned char*)keyP)[key_sizeP --];
 
     return hash;
 }
@@ -55,7 +54,7 @@ static hash_size_t def_hashfunc(const void * const keyP, int key_sizeP)
  * The user can also specify a hash function. If the hashfunc argument is NULL, a default hash function is used.
  * If an error occurred, NULL is returned. All other values in the returned obj_hash_table_t pointer should be released with hashtable_destroy().
  */
-obj_hash_table_t *obj_hashtable_create(const hash_size_t sizeP, hash_size_t (*hashfuncP)(const void*, int ), void (*freekeyfuncP)(void*), void (*freedatafuncP)(void*))
+obj_hash_table_t *obj_hashtable_create(hash_size_t sizeP, hash_size_t (*hashfuncP)(const void*, int ), void (*freekeyfuncP)(void*), void (*freedatafuncP)(void*))
 {
     obj_hash_table_t *hashtbl;
 
@@ -84,7 +83,7 @@ obj_hash_table_t *obj_hashtable_create(const hash_size_t sizeP, hash_size_t (*ha
  * Cleanup
  * The hashtable_destroy() walks through the linked lists for each possible hash value, and releases the elements. It also releases the nodes array and the obj_hash_table_t.
  */
-hashtable_rc_t obj_hashtable_destroy(obj_hash_table_t * const hashtblP)
+hashtable_rc_t obj_hashtable_destroy(obj_hash_table_t *hashtblP)
 {
     hash_size_t n;
     obj_hash_node_t *node, *oldnode;
@@ -104,7 +103,7 @@ hashtable_rc_t obj_hashtable_destroy(obj_hash_table_t * const hashtblP)
     return HASH_TABLE_OK;
 }
 //-------------------------------------------------------------------------------------------------------------------------------
-hashtable_rc_t obj_hashtable_is_key_exists (const obj_hash_table_t * const hashtblP, const void* const keyP, const int key_sizeP)
+hashtable_rc_t obj_hashtable_is_key_exists (obj_hash_table_t *hashtblP, void* keyP, int key_sizeP)
 //-------------------------------------------------------------------------------------------------------------------------------
 {
     obj_hash_node_t *node;
@@ -127,55 +126,12 @@ hashtable_rc_t obj_hashtable_is_key_exists (const obj_hash_table_t * const hasht
     }
     return HASH_TABLE_KEY_NOT_EXISTS;
 }
-//-------------------------------------------------------------------------------------------------------------------------------
-hashtable_rc_t obj_hashtable_dump_content (
-		const obj_hash_table_t * const hashtblP,
-		char               * const buffer_pP,
-		int                * const remaining_bytes_in_buffer_pP)
-//-------------------------------------------------------------------------------------------------------------------------------
-{
-    obj_hash_node_t  *node         = NULL;
-    unsigned int      i            = 0;
-    unsigned int      num_elements = 0;
-    int               rc;
-
-    if (hashtblP == NULL) {
-        rc = snprintf(
-                buffer_pP,
-                *remaining_bytes_in_buffer_pP,
-                "HASH_TABLE_BAD_PARAMETER_HASHTABLE");
-        return HASH_TABLE_BAD_PARAMETER_HASHTABLE;
-    }
-    while ((i < hashtblP->size) && (*remaining_bytes_in_buffer_pP > 0)) {
-        if (hashtblP->nodes[i] != NULL) {
-            node=hashtblP->nodes[i];
-            while(node) {
-                rc = snprintf(
-                     buffer_pP,
-                     *remaining_bytes_in_buffer_pP,
-                     "Hash 0x%x Key 0x%"PRIx64" Element %p\n",
-                     i,
-                     node->key,
-                     node->data);
-                node=node->next;
-                if ((0 > rc) || (*remaining_bytes_in_buffer_pP < rc)) {
-                  fprintf(stderr, "Error while dumping hashtable content");
-                } else {
-                  *remaining_bytes_in_buffer_pP -= rc;
-                }
-            }
-        }
-        i += 1;
-    }
-    return HASH_TABLE_OK;
-}
-
 //-------------------------------------------------------------------------------------------------------------------------------
 /*
  * Adding a new element
  * To make sure the hash value is not bigger than size, the result of the user provided hash function is used modulo size.
  */
-hashtable_rc_t obj_hashtable_insert(obj_hash_table_t * const hashtblP, const void* const keyP, const int key_sizeP, void *dataP)
+hashtable_rc_t obj_hashtable_insert(obj_hash_table_t *hashtblP, void* keyP, int key_sizeP, void *dataP)
 {
     obj_hash_node_t *node;
     hash_size_t      hash;
@@ -190,21 +146,15 @@ hashtable_rc_t obj_hashtable_insert(obj_hash_table_t * const hashtblP, const voi
             if (node->data) {
                 hashtblP->freedatafunc(node->data);
             }
-            node->data     = dataP;
-            node->key_size = key_sizeP;
+            node->data=dataP;
             // waste of memory here (keyP is lost) we should free it now
             return HASH_TABLE_INSERT_OVERWRITTEN_DATA;
         }
         node=node->next;
     }
     if(!(node=malloc(sizeof(obj_hash_node_t)))) return -1;
-    if(!(node->key=malloc(key_sizeP))) {
-    	free(node);
-    	return -1;
-    }
-    memcpy(node->key, keyP, key_sizeP);
-    node->data     = dataP;
-    node->key_size = key_sizeP;
+    node->key=keyP;
+    node->data=dataP;
     if (hashtblP->nodes[hash]) {
         node->next=hashtblP->nodes[hash];
     } else {
@@ -212,45 +162,13 @@ hashtable_rc_t obj_hashtable_insert(obj_hash_table_t * const hashtblP, const voi
     }
     hashtblP->nodes[hash]=node;
     return HASH_TABLE_OK;
-}//-------------------------------------------------------------------------------------------------------------------------------
-/*
- * To remove an element from the hash table, we just search for it in the linked list for that hash value,
- * and remove it if it is found. If it was not found, it is an error and -1 is returned.
- */
-hashtable_rc_t obj_hashtable_free(obj_hash_table_t * const hashtblP, const void* const keyP, const int key_sizeP)
-{
-    obj_hash_node_t *node, *prevnode=NULL;
-    hash_size_t      hash;
-
-    if (hashtblP == NULL) {
-        return HASH_TABLE_BAD_PARAMETER_HASHTABLE;
-    }
-
-    hash=hashtblP->hashfunc(keyP, key_sizeP)%hashtblP->size;
-    node=hashtblP->nodes[hash];
-    while(node) {
-        if ((node->key == keyP) || ((node->key_size == key_sizeP) && (memcmp(node->key, keyP, key_sizeP) == 0))){
-            if(prevnode) {
-                prevnode->next=node->next;
-            } else {
-                hashtblP->nodes[hash]=node->next;
-            }
-            hashtblP->freekeyfunc(node->key);
-            hashtblP->freedatafunc(node->data);
-            free(node);
-            return HASH_TABLE_OK;
-        }
-        prevnode=node;
-        node=node->next;
-    }
-    return HASH_TABLE_KEY_NOT_EXISTS;
 }
 //-------------------------------------------------------------------------------------------------------------------------------
 /*
  * To remove an element from the hash table, we just search for it in the linked list for that hash value,
  * and remove it if it is found. If it was not found, it is an error and -1 is returned.
  */
-hashtable_rc_t obj_hashtable_remove(obj_hash_table_t * const hashtblP, const void* const keyP, const int key_sizeP, void** dataP)
+hashtable_rc_t obj_hashtable_remove(obj_hash_table_t *hashtblP, const void* keyP, int key_sizeP)
 {
     obj_hash_node_t *node, *prevnode=NULL;
     hash_size_t      hash;
@@ -269,7 +187,7 @@ hashtable_rc_t obj_hashtable_remove(obj_hash_table_t * const hashtblP, const voi
                 hashtblP->nodes[hash]=node->next;
             }
             hashtblP->freekeyfunc(node->key);
-            *dataP = node->data;
+            hashtblP->freedatafunc(node->data);
             free(node);
             return HASH_TABLE_OK;
         }
@@ -283,7 +201,7 @@ hashtable_rc_t obj_hashtable_remove(obj_hash_table_t * const hashtblP, const voi
  * Searching for an element is easy. We just search through the linked list for the corresponding hash value.
  * NULL is returned if we didn't find it.
  */
-hashtable_rc_t obj_hashtable_get(const obj_hash_table_t *const hashtblP, const void* const keyP, const int key_sizeP, void** dataP)
+hashtable_rc_t obj_hashtable_get(obj_hash_table_t *hashtblP, const void* keyP, int key_sizeP, void** dataP)
 {
     obj_hash_node_t *node;
     hash_size_t      hash;
@@ -313,7 +231,7 @@ hashtable_rc_t obj_hashtable_get(const obj_hash_table_t *const hashtblP, const v
 /*
  * Function to return all keys of an object hash table
  */
-hashtable_rc_t obj_hashtable_get_keys(const obj_hash_table_t * const hashtblP, void ** keysP, unsigned int * sizeP)
+hashtable_rc_t obj_hashtable_get_keys(obj_hash_table_t *hashtblP, void ** keysP, unsigned int *sizeP)
 {
     size_t                 n     = 0;
     obj_hash_node_t       *node  = NULL;
@@ -340,10 +258,10 @@ hashtable_rc_t obj_hashtable_get_keys(const obj_hash_table_t * const hashtblP, v
  * If the number of elements are reduced, the hash table will waste memory. That is why we provide a function for resizing the table.
  * Resizing a hash table is not as easy as a realloc(). All hash values must be recalculated and each element must be inserted into its new position.
  * We create a temporary obj_hash_table_t object (newtbl) to be used while building the new hashes.
- * This allows us to reuse hashtable_insert() and hashtable_free(), when moving the elements to the new table.
+ * This allows us to reuse hashtable_insert() and hashtable_remove(), when moving the elements to the new table.
  * After that, we can just free the old table and copy the elements from newtbl to hashtbl.
  */
-hashtable_rc_t obj_hashtable_resize(obj_hash_table_t * const hashtblP, const hash_size_t sizeP)
+hashtable_rc_t obj_hashtable_resize(obj_hash_table_t *hashtblP, hash_size_t sizeP)
 {
     obj_hash_table_t       newtbl;
     hash_size_t        n;
@@ -362,7 +280,7 @@ hashtable_rc_t obj_hashtable_resize(obj_hash_table_t * const hashtblP, const has
         for(node=hashtblP->nodes[n]; node; node=next) {
             next = node->next;
             obj_hashtable_insert(&newtbl, node->key, node->key_size, node->data);
-            obj_hashtable_free(hashtblP, node->key, node->key_size);
+            obj_hashtable_remove(hashtblP, node->key, node->key_size);
         }
     }
 
diff --git a/common/utils/collection/hashtable/obj_hashtable.h b/common/utils/collection/hashtable/obj_hashtable.h
index 6bd17793fa46d8441105b1ea9a2ff22753704135..bf7ea89b9634ce3dab699549257f15e073c3aaf2 100755
--- a/common/utils/collection/hashtable/obj_hashtable.h
+++ b/common/utils/collection/hashtable/obj_hashtable.h
@@ -52,16 +52,14 @@ typedef struct obj_hash_table_s {
     void              (*freedatafunc)(void*);
 } obj_hash_table_t;
 
-obj_hash_table_t   *obj_hashtable_create  (const hash_size_t   size, hash_size_t (*hashfunc)(const void*, int ), void (*freekeyfunc)(void*), void (*freedatafunc)(void*));
-hashtable_rc_t      obj_hashtable_destroy (obj_hash_table_t * const hashtblP);
-hashtable_rc_t      obj_hashtable_is_key_exists (const obj_hash_table_t * const hashtblP, const void* const keyP, const int key_sizeP);
-hashtable_rc_t      obj_hashtable_insert  (obj_hash_table_t * const hashtblP,       const void* const keyP, const int key_sizeP, void *dataP);
-hashtable_rc_t      obj_hashtable_dump_content (const obj_hash_table_t * const hashtblP,char * const buffer_pP,int * const remaining_bytes_in_buffer_pP);
-hashtable_rc_t      obj_hashtable_free  (obj_hash_table_t *hashtblP, const void* keyP, const int key_sizeP);
-hashtable_rc_t      obj_hashtable_remove(obj_hash_table_t *hashtblP, const void* keyP, const int key_sizeP, void** dataP);
-hashtable_rc_t      obj_hashtable_get     (const obj_hash_table_t * const hashtblP, const void* const keyP, const int key_sizeP, void ** dataP);
-hashtable_rc_t      obj_hashtable_get_keys(const obj_hash_table_t * const hashtblP, void ** keysP, unsigned int * sizeP);
-hashtable_rc_t      obj_hashtable_resize  (obj_hash_table_t * const hashtblP, const hash_size_t sizeP);
+obj_hash_table_t   *obj_hashtable_create  (hash_size_t   size, hash_size_t (*hashfunc)(const void*, int ), void (*freekeyfunc)(void*), void (*freedatafunc)(void*));
+hashtable_rc_t      obj_hashtable_destroy (obj_hash_table_t *hashtblP);
+hashtable_rc_t      obj_hashtable_is_key_exists (obj_hash_table_t *hashtblP, void* keyP, int key_sizeP);
+hashtable_rc_t      obj_hashtable_insert  (obj_hash_table_t *hashtblP,       void* keyP, int key_sizeP, void *dataP);
+hashtable_rc_t      obj_hashtable_remove  (obj_hash_table_t *hashtblP, const void* keyP, int key_sizeP);
+hashtable_rc_t      obj_hashtable_get     (obj_hash_table_t *hashtblP, const void* keyP, int key_sizeP, void ** dataP);
+hashtable_rc_t      obj_hashtable_get_keys(obj_hash_table_t *hashtblP, void ** keysP, unsigned int *sizeP);
+hashtable_rc_t      obj_hashtable_resize  (obj_hash_table_t *hashtblP, hash_size_t sizeP);
 
 #endif
 
diff --git a/openair-cn/SGW-LITE/sgw_lite_context_manager.c b/openair-cn/SGW-LITE/sgw_lite_context_manager.c
index bb2ad7c8439179a7257521afee3916cf18b953a6..8f8fddea8c3f7eebb749de41fbc05f37bca5140a 100644
--- a/openair-cn/SGW-LITE/sgw_lite_context_manager.c
+++ b/openair-cn/SGW-LITE/sgw_lite_context_manager.c
@@ -194,7 +194,7 @@ int sgw_lite_cm_remove_s11_tunnel(Teid_t local_teid)
 {
   int  temp;
 
-  temp = hashtable_free(sgw_app.s11teid2mme_hashtable, local_teid);
+  temp = hashtable_remove(sgw_app.s11teid2mme_hashtable, local_teid);
 
   return temp;
 }
@@ -321,7 +321,7 @@ s_plus_p_gw_eps_bearer_context_information_t * sgw_lite_cm_create_bearer_context
 int sgw_lite_cm_remove_bearer_context_information(Teid_t teid)
 {
   int temp;
-  temp = hashtable_free(sgw_app.s11_bearer_context_information_hashtable, teid);
+  temp = hashtable_remove(sgw_app.s11_bearer_context_information_hashtable, teid);
   return temp;
 }
 
@@ -379,7 +379,7 @@ int sgw_lite_cm_remove_eps_bearer_entry(hash_table_t *eps_bearersP, ebi_t eps_be
     return -1;
   }
 
-  temp = hashtable_free(eps_bearersP, eps_bearer_idP);
+  temp = hashtable_remove(eps_bearersP, eps_bearer_idP);
 
   return temp;
 }
diff --git a/openair-cn/SGW-LITE/sgw_lite_handlers.c b/openair-cn/SGW-LITE/sgw_lite_handlers.c
index 7c692fe0f7d7df5d546ec89f61fb1e88346b3e6c..66db5a9675ad3133e5906ce5fbf64fb360170a8e 100644
--- a/openair-cn/SGW-LITE/sgw_lite_handlers.c
+++ b/openair-cn/SGW-LITE/sgw_lite_handlers.c
@@ -1178,26 +1178,7 @@ sgw_lite_handle_delete_session_request(
   return -1;
 }
 
-/*
- * Callback of hashtable_apply_funct_on_elements()
- */
-static void sgw_lite_release_all_enb_related_information(hash_key_t keyP, void* dataP, void* parameterP)
-{
-  sgw_eps_bearer_entry_t  *eps_bearer_entry_p = (sgw_eps_bearer_entry_t*)dataP;
-  if (NULL != eps_bearer_entry_p) {
-    memset(&eps_bearer_entry_p->enb_ip_address_for_S1u,0, sizeof(eps_bearer_entry_p->enb_ip_address_for_S1u));
-    eps_bearer_entry_p->enb_teid_for_S1u = 0;
-  }
-}
 
-
-/* From GPP TS 23.401 version 11.11.0 Release 11, section 5.3.5 S1 release procedure:
- * The S-GW releases all eNodeB related information (address and TEIDs) for the UE and responds with a Release
- * Access Bearers Response message to the MME. Other elements of the UE's S-GW context are not affected. The
- * S-GW retains the S1-U configuration that the S-GW allocated for the UE's bearers. The S-GW starts buffering
- * downlink packets received for the UE and initiating the "Network Triggered Service Request" procedure,
- * described in clause 5.3.4.3, if downlink packets arrive for the UE.
- */
 int
 sgw_lite_handle_release_access_bearers_request(
   const SgwReleaseAccessBearersRequest * const release_access_bearers_req_pP)
@@ -1230,14 +1211,7 @@ sgw_lite_handle_release_access_bearers_request(
 	release_access_bearers_resp_p->cause = REQUEST_ACCEPTED;
 	release_access_bearers_resp_p->teid  = ctx_p->sgw_eps_bearer_context_information.mme_teid_for_S11;
 
-
 #warning "TODO Here the release (sgw_lite_handle_release_access_bearers_request)"
-    hash_rc = hashtable_apply_funct_on_elements(ctx_p->sgw_eps_bearer_context_information.pdn_connection.sgw_eps_bearers,
-                                                sgw_lite_release_all_enb_related_information,
-                                                NULL);
-
-	// TODO The S-GW starts buffering downlink packets received for the UE
-	// (set target on GTPUSP to order the buffering)
 
     MSC_LOG_TX_MESSAGE(
   		MSC_SP_GWAPP_MME,