diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
index 348002e3e9099bd073286a69059e1997ec994a81..4fba2147cc72acd4c1cb634ebb5739aaea869b67 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
@@ -1549,8 +1549,7 @@ uint8_t do_RRCConnectionReconfiguration(uint8_t                           Mod_id
 					struct MeasConfig__speedStatePars *speedStatePars,
 					RSRP_Range_t                      *rsrp,
                                         C_RNTI_t                          *cba_rnti, 
-					uint8_t                           *nas_pdu,
-                                        uint32_t                           nas_length
+                                        struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList
                                        ) {
 
   asn_enc_rval_t enc_rval;
@@ -1622,14 +1621,7 @@ uint8_t do_RRCConnectionReconfiguration(uint8_t                           Mod_id
   else
     rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo  = NULL;
   
-  if ((nas_pdu == NULL) || (nas_length == 0)) {
-    rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.dedicatedInfoNASList = (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *) NULL;
-  } else {
-      DedicatedInfoNAS_t *dedicatedInfoNAS;
-      dedicatedInfoNAS = (DedicatedInfoNAS_t *) &rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.dedicatedInfoNASList;
-      dedicatedInfoNAS->buf = nas_pdu;
-      dedicatedInfoNAS->size = nas_length;
-  }
+  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.dedicatedInfoNASList = dedicatedInfoNASList;
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.securityConfigHO     = NULL;
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->s_Measure= rsrp;
 
@@ -1640,6 +1632,7 @@ uint8_t do_RRCConnectionReconfiguration(uint8_t                           Mod_id
 #ifdef XER_PRINT
    xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)&dl_dcch_msg);
 #endif
+
   //#ifdef USER_MODE
   LOG_I(RRC,"RRCConnectionReconfiguration Encoded %d bits (%d bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
   // for (i=0;i<30;i++)
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.h b/openair2/RRC/LITE/MESSAGES/asn1_msg.h
index 130caa75ff0185ff40a034e5dffe3cff5eb4e2cf..37391c20697b9cfc5a146cb1a2f1e9442a405f11 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.h
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.h
@@ -181,8 +181,7 @@ uint8_t do_RRCConnectionReconfiguration(uint8_t                           Mod_id
 					struct MeasConfig__speedStatePars *speedStatePars,
 					RSRP_Range_t                      *rsrp,
 					C_RNTI_t                          *cba_rnti, 
-					uint8_t                           *nas_pdu,
-                                        uint32_t                           nas_length);
+					struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList);
 
 /***
  * \brief Generate an MCCH-Message (eNB). This routine configures MBSFNAreaConfiguration (PMCH-InfoList and Subframe Allocation for MBMS data)
diff --git a/openair2/RRC/LITE/defs.h b/openair2/RRC/LITE/defs.h
index abedda0f0c0ee26c601e4ef73be9dfd400450e92..7c43427999188681d3d09d45dbeb3e45a648bbbb 100644
--- a/openair2/RRC/LITE/defs.h
+++ b/openair2/RRC/LITE/defs.h
@@ -185,8 +185,6 @@ typedef struct eNB_RRC_UE_INFO_s {
     uint32_t eNB_ue_s1ap_id :24;
     /* Number of e_rab to be setup in the list */
     uint8_t nb_of_e_rabs;
-    /* Index of e_rab to be setup in the list */
-    uint8_t index_of_e_rabs;
     /* list of e_rab to be setup by RRC layers */
     e_rab_param_t e_rab[S1AP_MAX_E_RAB];
 #endif
@@ -553,12 +551,6 @@ void rrc_eNB_process_RRCConnectionSetupComplete(u8 Mod_id, u32 frame, u8 UE_inde
    \param rrcConnectionReconfigurationComplete Pointer to RRCConnectionReconfigurationComplete message*/
 void rrc_eNB_process_RRCConnectionReconfigurationComplete(u8 Mod_id,u32 frame,u8 UE_index,RRCConnectionReconfigurationComplete_r8_IEs_t *rrcConnectionReconfigurationComplete);
 
-/**\brief Generate/decode the Default (first) RRCConnectionReconfiguration at eNB
-   \param Mod_id Instance ID for eNB/CH
-   \param frame Frame index
-   \param UE_index Index of UE transmitting the messages*/
-void rrc_eNB_generate_defaultRRCConnectionReconfiguration(u8 Mod_id, u32 frame, u16 UE_index, u8 *nas_pdu, u32 nas_length, u8 ho_state);
-
 #if defined(ENABLE_ITTI)
 /**\brief RRC eNB task.
    \param void *args_p Pointer on arguments to start the task. */
diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c
index 2fd4db1074c4cdb548fcd26736e84e5f930e92d5..a6ab493713c0ecd99ebf578524fa4a70b1cd9d4c 100644
--- a/openair2/RRC/LITE/rrc_eNB.c
+++ b/openair2/RRC/LITE/rrc_eNB.c
@@ -584,13 +584,11 @@ void rrc_eNB_generate_UECapabilityEnquiry (u8 Mod_id, u32 frame, u16 UE_index)
 }
 
 /*------------------------------------------------------------------------------*/
-void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
-                                                           u16 UE_index,
-                                                           u8 * nas_pdu,
-                                                           u32 nas_length,
-                                                           u8 ho_state)
+static void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
+                                                                  u16 UE_index,
+                                                                  u8 ho_state)
 {
-
+  eNB_RRC_UE_INFO *UE_info = &eNB_rrc_inst[Mod_id].Info.UE[UE_index];
   u8 buffer[RRC_BUF_SIZE];
   u8 size;
   int i;
@@ -598,7 +596,6 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
   // configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
   eNB_RRC_INST *rrc_inst = &eNB_rrc_inst[Mod_id];
 
-
   struct PhysicalConfigDedicated **physicalConfigDedicated = &rrc_inst->physicalConfigDedicated[UE_index];
 
 
@@ -639,6 +636,8 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
   QuantityConfig_t *quantityConfig=NULL;
   CellsToAddMod_t *CellToAdd;
   CellsToAddModList_t *CellsToAddModList;
+  struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList;
+  DedicatedInfoNAS_t *dedicatedInfoNas;
 
   C_RNTI_t *cba_RNTI = NULL;
 #ifdef CBA
@@ -695,7 +694,6 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
 
   SRB2_lchan_config->present =  SRB_ToAddMod__logicalChannelConfig_PR_explicitValue;
 
-
   SRB2_ul_SpecificParameters = CALLOC (1, sizeof (*SRB2_ul_SpecificParameters));
 
   SRB2_ul_SpecificParameters->priority = 1;
@@ -869,25 +867,18 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
 
   // Report Configurations for periodical, A1-A5 events
   ReportConfig_list = CALLOC (1, sizeof (*ReportConfig_list));
-  memset ((void *) ReportConfig_list, 0, sizeof (*ReportConfig_list));
 
   ReportConfig_per = CALLOC (1, sizeof (*ReportConfig_per));
-  memset ((void *) ReportConfig_per, 0, sizeof (*ReportConfig_per));
 
   ReportConfig_A1 = CALLOC (1, sizeof (*ReportConfig_A1));
-  memset ((void *) ReportConfig_A1, 0, sizeof (*ReportConfig_A1));
 
   ReportConfig_A2 = CALLOC (1, sizeof (*ReportConfig_A2));
-  memset ((void *) ReportConfig_A2, 0, sizeof (*ReportConfig_A2));
 
   ReportConfig_A3 = CALLOC (1, sizeof (*ReportConfig_A3));
-  memset ((void *) ReportConfig_A3, 0, sizeof (*ReportConfig_A3));
 
   ReportConfig_A4 = CALLOC (1, sizeof (*ReportConfig_A4));
-  memset ((void *) ReportConfig_A4, 0, sizeof (*ReportConfig_A4));
 
   ReportConfig_A5 = CALLOC (1, sizeof (*ReportConfig_A5));
-  memset ((void *) ReportConfig_A5, 0, sizeof (*ReportConfig_A5));
 
   ReportConfig_per->reportConfigId = 1;
   ReportConfig_per->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
@@ -1031,6 +1022,28 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
 
   }
    
+  /* Initialize NAS list */
+  dedicatedInfoNASList = CALLOC (1, sizeof (struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList));
+  /* Add all NAS PDUs to the list */
+  for (i = 0; i < UE_info->nb_of_e_rabs; i++)
+  {
+    if (UE_info->e_rab[i].param.nas_pdu.buffer != NULL)
+    {
+      dedicatedInfoNas = malloc (sizeof(DedicatedInfoNAS_t));
+
+      OCTET_STRING_fromBuf (dedicatedInfoNas, (char *) UE_info->e_rab[i].param.nas_pdu.buffer, UE_info->e_rab[i].param.nas_pdu.length);
+      ASN_SEQUENCE_ADD (&dedicatedInfoNASList->list, dedicatedInfoNas);
+    }
+
+    /* TODO should test if e RAB are Ok before! */
+    eNB_rrc_inst[Mod_id].Info.UE[UE_index].e_rab[i].status = E_RAB_STATUS_DONE;
+  }
+  /* If list is empty free the list and reset the address */
+  if(dedicatedInfoNASList->list.count == 0)
+  {
+    free (dedicatedInfoNASList);
+    dedicatedInfoNASList = NULL;
+  }
   memset (buffer, 0, RRC_BUF_SIZE);
 
   size = do_RRCConnectionReconfiguration (Mod_id, buffer, UE_index, rrc_eNB_get_next_transaction_identifier(Mod_id),  //Transaction_id,
@@ -1039,7 +1052,18 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 frame,
                                           physicalConfigDedicated[UE_index], MeasObj_list, ReportConfig_list, 
                                           quantityConfig,
                                           MeasId_list, mac_MainConfig, NULL,NULL,Sparams,rsrp,
-                                          cba_RNTI, nas_pdu, nas_length);
+                                          cba_RNTI, dedicatedInfoNASList);
+
+  /* Free all NAS PDUs */
+  for (i = 0; i < UE_info->nb_of_e_rabs; i++)
+  {
+    if (UE_info->e_rab[i].param.nas_pdu.buffer != NULL)
+    {
+      /* Free the NAS PDU buffer and invalidate it */
+      free (UE_info->e_rab[i].param.nas_pdu.buffer);
+      UE_info->e_rab[i].param.nas_pdu.buffer = NULL;
+    }
+  }
 
   LOG_I (RRC,"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE id %d)\n",
          Mod_id, frame, size, UE_index);
@@ -1277,7 +1301,8 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover (u8 Mod_id, u32 fram
   struct LogicalChannelConfig__ul_SpecificParameters *SRB1_ul_SpecificParameters;
   // phy config dedicated
   PhysicalConfigDedicated_t *physicalConfigDedicated2;
-  
+  struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList;
+
 
   LOG_D(RRC,"[eNB %d] Frame %d: handover preparation: get the newSourceUEIdentity (C-RNTI): ", Mod_id, frame);
   for (i=0;i<2;i++) {
@@ -1697,25 +1722,18 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover (u8 Mod_id, u32 fram
 
   // Report Configurations for periodical, A1-A5 events
   ReportConfig_list = CALLOC (1, sizeof (*ReportConfig_list));
-  memset ((void *) ReportConfig_list, 0, sizeof (*ReportConfig_list));
 
   ReportConfig_per = CALLOC (1, sizeof (*ReportConfig_per));
-  memset ((void *) ReportConfig_per, 0, sizeof (*ReportConfig_per));
 
   ReportConfig_A1 = CALLOC (1, sizeof (*ReportConfig_A1));
-  memset ((void *) ReportConfig_A1, 0, sizeof (*ReportConfig_A1));
 
   ReportConfig_A2 = CALLOC (1, sizeof (*ReportConfig_A2));
-  memset ((void *) ReportConfig_A2, 0, sizeof (*ReportConfig_A2));
 
   ReportConfig_A3 = CALLOC (1, sizeof (*ReportConfig_A3));
-  memset ((void *) ReportConfig_A3, 0, sizeof (*ReportConfig_A3));
 
   ReportConfig_A4 = CALLOC (1, sizeof (*ReportConfig_A4));
-  memset ((void *) ReportConfig_A4, 0, sizeof (*ReportConfig_A4));
 
   ReportConfig_A5 = CALLOC (1, sizeof (*ReportConfig_A5));
-  memset ((void *) ReportConfig_A5, 0, sizeof (*ReportConfig_A5));
 
   ReportConfig_per->reportConfigId = 1;
   ReportConfig_per->reportConfig.present = ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
@@ -1964,7 +1982,9 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover (u8 Mod_id, u32 fram
 #endif
                              );
     
-    
+    /* Initialize NAS list */
+    dedicatedInfoNASList = NULL;
+
   //  rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
     memset (buffer, 0, RRC_BUF_SIZE);
 
@@ -1974,7 +1994,7 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover (u8 Mod_id, u32 fram
                                           physicalConfigDedicated[UE_index], MeasObj_list, ReportConfig_list,
                                           NULL, //quantityConfig,
                                           MeasId_list, mac_MainConfig, NULL, mobilityInfo,Sparams,
-                                          NULL, NULL, nas_pdu, nas_length);
+                                          NULL, NULL, dedicatedInfoNASList);
 
     LOG_I (RRC,"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration for handover (bytes %d, UE id %d)\n",
          Mod_id, frame, size, UE_index);
@@ -2698,8 +2718,6 @@ int rrc_eNB_decode_dcch (u8 Mod_id, u32 frame, u8 Srb_id, u8 UE_index,
   UL_DCCH_Message_t *ul_dcch_msg = NULL;        //&uldcchmsg;
   UE_EUTRA_Capability_t *UE_EUTRA_Capability = NULL;
 
-  int i;
-
   if (Srb_id != 1)
     {
       LOG_E (RRC,
@@ -2742,9 +2760,13 @@ int rrc_eNB_decode_dcch (u8 Mod_id, u32 frame, u8 Srb_id, u8 UE_index,
 # endif
 #endif
 
-  for (i = 0; i < sdu_size; i++)
-    LOG_T (RRC, "%x.", Rx_sdu[i]);
-  LOG_T (RRC, "\n");
+  {
+    int i;
+
+    for (i = 0; i < sdu_size; i++)
+      LOG_T (RRC, "%x.", Rx_sdu[i]);
+    LOG_T (RRC, "\n");
+  }
 
   if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0))
     {
@@ -2804,14 +2826,12 @@ int rrc_eNB_decode_dcch (u8 Mod_id, u32 frame, u8 Srb_id, u8 UE_index,
           }
 
 #if defined(ENABLE_USE_MME)
+# if defined(ENABLE_ITTI)
           if (EPC_MODE_ENABLED == 1)
           {
-# if defined(ENABLE_ITTI)
-            eNB_RRC_UE_INFO *UE_info = &eNB_rrc_inst[Mod_id].Info.UE[UE_index];
-
             rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP (Mod_id, UE_index);
-# endif
           }
+# endif
 #endif
           break;
 
@@ -2919,39 +2939,9 @@ int rrc_eNB_decode_dcch (u8 Mod_id, u32 frame, u8 Srb_id, u8 UE_index,
                       (void *) UE_EUTRA_Capability);
 #endif
 
-#if defined(ENABLE_USE_MME)
-          if (EPC_MODE_ENABLED == 1)
-          {
-              eNB_RRC_UE_INFO *UE_info = &eNB_rrc_inst[Mod_id].Info.UE[UE_index];
-
-# if defined(ENABLE_ITTI)
-            /* Process e RAB parameters received from S1AP one by one (assuming that only one will be received from real network this should be OK) */
-            if  (UE_info->nb_of_e_rabs > 0)
-            {
-                /* Process the first e RAB configuration from S1AP initial_context_setup_req */
-                rrc_eNB_generate_defaultRRCConnectionReconfiguration (Mod_id, frame,
-                                                                      UE_index,
-                                                                      UE_info->e_rab[UE_info->index_of_e_rabs].param.nas_pdu.buffer,
-                                                                      UE_info->e_rab[UE_info->index_of_e_rabs].param.nas_pdu.length,
-                                                                      eNB_rrc_inst[Mod_id].HO_flag);
-                /* Free the NAS PDU buffer and invalidate it */
-                if (UE_info->e_rab[UE_info->index_of_e_rabs].param.nas_pdu.buffer != NULL)
-                {
-                  free (UE_info->e_rab[UE_info->index_of_e_rabs].param.nas_pdu.buffer);
-                }
-                UE_info->e_rab[UE_info->index_of_e_rabs].param.nas_pdu.buffer = NULL;
-                UE_info->nb_of_e_rabs --;
-                UE_info->index_of_e_rabs ++;
-            }
-# endif
-          }
-          else
-#endif
-          {
-            rrc_eNB_generate_defaultRRCConnectionReconfiguration (Mod_id, frame,
-                                                                  UE_index,
-                                                                  NULL, 0, eNB_rrc_inst[Mod_id].HO_flag);
-          }
+          rrc_eNB_generate_defaultRRCConnectionReconfiguration (Mod_id, frame,
+                                                                UE_index,
+                                                                eNB_rrc_inst[Mod_id].HO_flag);
           break;
 
         case UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer:
diff --git a/openair2/RRC/LITE/rrc_eNB_S1AP.c b/openair2/RRC/LITE/rrc_eNB_S1AP.c
index c6a9e3d0956dba5179c2250bdf17c0fb2795fb2d..4181ecbfc09e9b2550485955ba23f3bc008d5d7b 100644
--- a/openair2/RRC/LITE/rrc_eNB_S1AP.c
+++ b/openair2/RRC/LITE/rrc_eNB_S1AP.c
@@ -159,7 +159,7 @@ void rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(uint8_t mod_id, uint8_t ue_ind
 
   msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_INITIAL_CONTEXT_SETUP_RESP);
   S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).eNB_ue_s1ap_id = UE_info->eNB_ue_s1ap_id;
-  for (e_rab = 0; e_rab < UE_info->index_of_e_rabs; e_rab++) {
+  for (e_rab = 0; e_rab < UE_info->nb_of_e_rabs; e_rab++) {
     if (UE_info->e_rab[e_rab].status == E_RAB_STATUS_DONE) {
       e_rabs_done++;
       S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).e_rabs[e_rab].e_rab_id = UE_info->e_rab[e_rab].param.e_rab_id;
@@ -390,7 +390,6 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
       int i;
 
       eNB_rrc_inst[instance].Info.UE[ue_index].nb_of_e_rabs = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).nb_of_e_rabs;
-      eNB_rrc_inst[instance].Info.UE[ue_index].index_of_e_rabs = 0;
       for (i = 0; i < eNB_rrc_inst[instance].Info.UE[ue_index].nb_of_e_rabs; i++) {
         eNB_rrc_inst[instance].Info.UE[ue_index].e_rab[i].status = E_RAB_STATUS_NEW;
         eNB_rrc_inst[instance].Info.UE[ue_index].e_rab[i].param = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i];