diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
index 27c4ff4b722fbc2d1f33095c41f12442a51d5b32..d9fe1ea84f1a27b5bca924d419d6f48183243abd 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
@@ -101,7 +101,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
           if (ue->mac_enabled==1) {
               LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",ue->Mod_id);
               //mac_resynch();
-              mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,ue->common_vars.eNb_id,1);//ue->common_vars.eNb_id);
+              mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,0,1);//ue->common_vars.eNb_id);
               ue->UE_mode[0] = PRACH;
           }
           else {
diff --git a/openair1/PHY/LTE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_TRANSPORT/initial_sync.c
index 6a55dfc5af373bf9be2e8daff2066d83c5411416..50c12951c9b5fb70fc3a3e79bf36982c4a01c2e6 100644
--- a/openair1/PHY/LTE_TRANSPORT/initial_sync.c
+++ b/openair1/PHY/LTE_TRANSPORT/initial_sync.c
@@ -721,7 +721,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
       if (ue->mac_enabled==1) {
 	LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",ue->Mod_id);
 	//mac_resynch();
-	mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,ue->common_vars.eNb_id,1);//ue->common_vars.eNb_id);
+	mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,0,1);//ue->common_vars.eNb_id);
 	ue->UE_mode[0] = PRACH;
       }
       else {
@@ -963,7 +963,7 @@ int initial_sync_freq(PHY_VARS_UE *ue, runmode_t mode)
       if (ue->mac_enabled==1) {
 	LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",ue->Mod_id);
 	//mac_resynch();
-	mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,ue->common_vars.eNb_id,1);//ue->common_vars.eNb_id);
+	mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,0,1);//ue->common_vars.eNb_id);
 	ue->UE_mode[0] = PRACH;
       }
       else {
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index dda12cc4a53b53fdda988f23d5b7f4aec5b970fc..69e9694a938ee9fb495287f6a0f9a44f24be174b 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -1822,7 +1822,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
         CC_id,
         frame_tx,
         subframe_tx,
-        ue->common_vars.eNb_id,//changed
+        eNB_id,
         ulsch_input_buffer,
         input_buffer_length,
         &access_mode);
@@ -2052,7 +2052,7 @@ void get_pucch_param(PHY_VARS_UE    *ue,
     case pucch_format1a:
     case pucch_format1b:
     {
-        pucch_resource[0] = get_n1_pucch(ue,
+        pucch_resource[0] = get_n1_pucch(ue,/*not necessary to change*/
                                          proc,
                                          ue->dlsch[current_thread_id[proc->subframe_rx]][eNB_id][0]->harq_ack,
                                          eNB_id,
@@ -2069,12 +2069,12 @@ void get_pucch_param(PHY_VARS_UE    *ue,
         pucch_resource[0]    = ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.cqi_PUCCH_ResourceIndex;
         if(cqi_report)
         {
-            pucch_payload[0] = get_pucch2_cqi(ue,eNB_id,(int*)plength);
+            pucch_payload[0] = get_pucch2_cqi(ue,eNB_id,(int*)plength);/*not necessary to change*/
         }
         else
         {
             *plength = 1;
-            pucch_payload[0] = get_pucch2_ri(ue,eNB_id);
+            pucch_payload[0] = get_pucch2_ri(ue,eNB_id);/*not necessary to change*/
         }
     }
     break;
@@ -2473,7 +2473,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
       // check if we need to use PUCCH 1a/1b
       ue_pucch_procedures(ue,proc,eNB_id,abstraction_flag);
       // check if we need to use SRS
-      ue_srs_procedures(ue,proc,eNB_id,abstraction_flag);
+      ue_srs_procedures(ue,proc,eNB_id,abstraction_flag);//not necessary to change
   } // UE_mode==PUSCH
 
 
@@ -2493,11 +2493,11 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
     Mod_id,frame_tx,subframe_tx,
     ue->ulsch[eNB_id]->num_cba_dci[subframe_tx]);
 
-    mac_xface->ue_get_sdu(Mod_id,// changed
+    mac_xface->ue_get_sdu(Mod_id,
         CC_id,
         frame_tx,
         subframe_tx,
-        ue->common_vars.eNb_id,
+        eNB_id,
         ulsch_input_buffer,
         input_buffer_length,
         &access_mode);
@@ -2507,7 +2507,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
     if (access_mode > UNKNOWN_ACCESS) {
 
       if (abstraction_flag==0) {
-        if (ulsch_encoding(ulsch_input_buffer,
+        if (ulsch_encoding(ulsch_input_buffer,//not necessary to change
                            ue,
                            harq_pid,
                            eNB_id,
@@ -2987,7 +2987,7 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
 
     if (ue->mac_enabled==1) {
       //printf("[UE%d] if mac_enabled? then dl_phy_sync_success. UE_mode %s\n",ue->Mod_id,ue->UE_mode[eNB_id]==NOT_SYNCHED?"NOT_SYNCHED":ue->UE_mode[eNB_id]==NOT_SYNCHED?"SYNCHED":"OTHER CHOICE");
-      mac_xface->dl_phy_sync_success(ue->Mod_id,frame_rx,ue->common_vars.eNb_id,
+      mac_xface->dl_phy_sync_success(ue->Mod_id,frame_rx,0,
              ue->UE_mode[eNB_id]==NOT_SYNCHED ? 1 : 0);
     }
 
@@ -4188,7 +4188,7 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
     mac_xface->ue_decode_si(ue->Mod_id,
           CC_id,
           frame_rx,
-          ue->common_vars.eNb_id,
+          eNB_id,
           ue->dlsch_SI[eNB_id]->harq_processes[0]->b,
           ue->dlsch_SI[eNB_id]->harq_processes[0]->TBS>>3);
     break;
@@ -4440,7 +4440,7 @@ void *UE_thread_slot1_dl_processing(void *arg) {
                     l,
                     slot1,
                     0);
-            ue_measurement_procedures(l-1,ue,proc,ue->common_vars.eNb_id,1+(subframe_rx<<1),0,ue->mode);
+            ue_measurement_procedures(l-1,ue,proc,0,1+(subframe_rx<<1),0,ue->mode);
         }
         //printf("AbsSubframe %d.%d ChanEst slot %d, symbol %d\n", frame_rx,subframe_rx,next_subframe_slot0,pilot0);
         front_end_chanEst(ue,
@@ -5235,7 +5235,7 @@ else
 #endif
     }
 
-    ue_measurement_procedures(l-1,ue,proc,eNB_id,(subframe_rx<<1),abstraction_flag,mode);
+    ue_measurement_procedures(l-1,ue,proc,eNB_id,(subframe_rx<<1),abstraction_flag,mode);/*eNB_id=0*/
 
     if (do_pdcch_flag) {
       if ((l==pilot1) ||
@@ -5243,7 +5243,7 @@ else
 	LOG_D(PHY,"[UE  %d] Frame %d: Calling pdcch procedures (eNB %d)\n",ue->Mod_id,frame_rx,eNB_id);
 
 	//start_meas(&ue->rx_pdcch_stats[ue->current_thread_id[subframe_rx]]);
-	if (ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) {
+	if (ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) {/*eNB_id=0*/
 	  LOG_E(PHY,"[UE  %d] Frame %d, subframe %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,subframe_rx);
 	  return(-1);
 	}
@@ -5770,7 +5770,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
             frame_tx,
             subframe_tx,
             subframe_select(&ue->frame_parms,subframe_tx),
-            ue->common_vars.eNb_id,
+            eNB_id,
             0/*FIXME CC_id*/);
 
   if (ret == CONNECTION_LOST) {
diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c
index e04d7c3b8ad14f7b069ca8147be8712399c1bfea..cb530290f37ec9d7014d90926c283af38f8366ec 100644
--- a/openair2/LAYER2/MAC/main.c
+++ b/openair2/LAYER2/MAC/main.c
@@ -62,6 +62,7 @@
 #endif //PHY_EMUL
 
 #include "SCHED/defs.h"
+#include "PHY/extern.h"
 /* TODO: this abstraction_flag here is very hackish - find a proper solution */
 extern uint8_t abstraction_flag;
 void dl_phy_sync_success(module_id_t   module_idP,
@@ -69,7 +70,7 @@ void dl_phy_sync_success(module_id_t   module_idP,
                          unsigned char eNB_index,
                          uint8_t            first_sync)   //init as MR
 {
-  LOG_D(MAC,"[UE %d] Frame %d: PHY Sync to eNB_index %d successful \n", module_idP, frameP, eNB_index);
+  LOG_D(MAC,"[UE %d] Frame %d: PHY Sync to eNB_index %d successful \n", module_idP, frameP, /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id);
 #if defined(ENABLE_USE_MME)
   int mme_enabled=1;
 #else
@@ -78,10 +79,10 @@ void dl_phy_sync_success(module_id_t   module_idP,
 
   if (first_sync==1 && !(mme_enabled==1 && abstraction_flag==0)) {
     layer2_init_UE(module_idP);
-    openair_rrc_ue_init(module_idP,eNB_index);
+    openair_rrc_ue_init(module_idP,PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id);
   } else
   {
-    rrc_in_sync_ind(module_idP,frameP,eNB_index);
+    rrc_in_sync_ind(module_idP,frameP,PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id);
   }
 }
 
diff --git a/openair2/LAYER2/MAC/ra_procedures.c b/openair2/LAYER2/MAC/ra_procedures.c
index 50f420cb75d461d64230d6a9150c2b0c2ac6cb44..913dbc3eda916bdbca3b695b07581804b6c05e8f 100644
--- a/openair2/LAYER2/MAC/ra_procedures.c
+++ b/openair2/LAYER2/MAC/ra_procedures.c
@@ -210,7 +210,7 @@ void get_prach_resources(module_id_t module_idP,
       UE_mac_inst[module_idP].RA_prach_resources.ra_RACH_MaskIndex = 0;
       UE_mac_inst[module_idP].RA_usedGroupA = 1;
     } else if ((Msg3_size <messageSizeGroupA) ||
-               (mac_xface->get_PL(module_idP,0,eNB_index) > PLThreshold)) {
+               (mac_xface->get_PL(module_idP,0,eNB_index) > PLThreshold)) {//not necessary to change
       // use Group A procedure
       UE_mac_inst[module_idP].RA_prach_resources.ra_PreambleIndex  = (taus())%sizeOfRA_PreamblesGroupA;
       UE_mac_inst[module_idP].RA_prach_resources.ra_RACH_MaskIndex = 0;
@@ -348,7 +348,7 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP,int CC_id,frame_t frameP,
         printf("ue_get_rach:Size16 %d\n",Size16);
         //  LOG_D(MAC,"[UE %d] Frame %d: Requested RRCConnectionRequest, got %d bytes\n",module_idP,frameP,Size);
         LOG_D(RRC, "[MSC_MSG][FRAME %05d][RRC_UE][MOD %02d][][--- MAC_DATA_REQ (RRCConnectionRequest eNB %d) --->][MAC_UE][MOD %02d][]\n",
-              frameP, module_idP, eNB_indexP, module_idP);
+              frameP, module_idP, /*eNB_indexP*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id, module_idP);
         LOG_D(MAC,"[UE %d] Frame %d: Requested RRCConnectionRequest, got %d bytes\n",module_idP,frameP,Size);
 
         if (Size>0) {
diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index cbb375bfdb152e6a7741cf8ce3b2ac00e0617909..6c8629b4278ef0a85070966f16a65dd23d81babb 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -363,7 +363,7 @@ ue_send_sdu(
 
 #ifdef DEBUG_HEADER_PARSING
   LOG_D(MAC,"[UE %d] ue_send_sdu : Frame %d eNB_index %d : num_ce %d num_sdu %d\n",module_idP,
-        frameP,eNB_index,num_ce,num_sdu);
+        frameP,/*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,num_ce,num_sdu);
 #endif
 
 #if defined(ENABLE_MAC_PAYLOAD_DEBUG)
@@ -397,7 +397,7 @@ ue_send_sdu(
         for (i=0; i<6; i++)
           if (tx_sdu[i] != payload_ptr[i]) {
             LOG_E(MAC,"[UE %d][RAPROC] Contention detected, RA failed\n",module_idP);
-            mac_xface->ra_failed(module_idP,CC_id,eNB_index);
+            mac_xface->ra_failed(module_idP,CC_id,eNB_index);/*eNB_index=0*/
             UE_mac_inst[module_idP].RA_contention_resolution_timer_active = 0;
             VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_OUT);
             return;
@@ -405,7 +405,7 @@ ue_send_sdu(
 
         LOG_I(MAC,"[UE %d][RAPROC] Frame %d : Clearing contention resolution timer\n", module_idP, frameP);
         UE_mac_inst[module_idP].RA_contention_resolution_timer_active = 0;
-        mac_xface->ra_succeeded(module_idP,CC_id,eNB_index);
+        mac_xface->ra_succeeded(module_idP,CC_id,eNB_index);/*eNB_index=0*/
       }
 
       payload_ptr+=6;
@@ -439,7 +439,7 @@ ue_send_sdu(
             module_idP,
             UE_mac_inst[module_idP].crnti,
             frameP,
-            eNB_index,
+            /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
             rx_lengths[i]);
 
 #if defined(ENABLE_MAC_PAYLOAD_DEBUG)
@@ -529,7 +529,7 @@ void ue_decode_si(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_i
                    (uint8_t *)pdu,
                    len,
                    ENB_FLAG_NO,
-                   eNB_index,
+                   /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
                    0);
 //printf("2\n");
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_SI, VCD_FUNCTION_OUT);
@@ -569,7 +569,7 @@ void ue_decode_p(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_in
                    (uint8_t *)pdu,
                    len,
                    ENB_FLAG_NO,
-                   eNB_index,
+                   /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
                    0);
 //printf("3\n");
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_OUT);
@@ -1281,7 +1281,7 @@ unsigned char generate_ulsch_header(uint8_t *mac_header,
 
 }
 
-void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subframe, uint8_t eNB_index,uint8_t *ulsch_buffer,uint16_t buflen, uint8_t *access_mode)
+void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subframe, uint8_t eNB_index,uint8_t *ulsch_buffer,uint16_t buflen, uint8_t *access_mode)/*eNB_index=0*/
 {
 
   uint8_t total_rlc_pdu_header_len=0, rlc_pdu_header_len_last=0 ;
@@ -1333,7 +1333,7 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
           module_idP, frameP, subframe);
 
     //if (UE_mac_inst[module_idP].scheduling_info.LCID_status[DTCH] == LCID_EMPTY)
-    if (cba_access(module_idP,frameP,subframe,eNB_index,buflen)==0) {
+    if (cba_access(module_idP,frameP,subframe,eNB_index,buflen)==0) {/*eNB_index not used*/
       *access_mode=POSTPONED_ACCESS;
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GET_SDU, VCD_FUNCTION_OUT);
       return;
@@ -1429,7 +1429,7 @@ for (lcid=DCCH; (lcid < MAX_NUM_LCID) && (is_all_lcid_processed == FALSE) ; lcid
       is_lcid_processed	= FALSE;
       lcid_buffer_occupancy_old = mac_rlc_get_buffer_occupancy_ind(module_idP,
               	  	  	  	  	  	  	  	  	  	  	  	  	  UE_mac_inst[module_idP].crnti,
-																  eNB_index,
+																  /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
 																  frameP,
 																  subframe,
 																  ENB_FLAG_NO,
@@ -1465,7 +1465,7 @@ for (lcid=DCCH; (lcid < MAX_NUM_LCID) && (is_all_lcid_processed == FALSE) ; lcid
 
 		  sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP,
 							 UE_mac_inst[module_idP].crnti,
-							 eNB_index,
+							 /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
 							 frameP,
 							 ENB_FLAG_NO,
 							 MBMS_FLAG_NO,
@@ -1519,7 +1519,7 @@ for (lcid=DCCH; (lcid < MAX_NUM_LCID) && (is_all_lcid_processed == FALSE) ; lcid
           /* Get updated BO after multiplexing this PDU */
           lcid_buffer_occupancy_new = mac_rlc_get_buffer_occupancy_ind(module_idP,
                         	  	  	  	  	  	  	  	  	  	  	  	  	  UE_mac_inst[module_idP].crnti,
-          																  eNB_index,
+          																  /*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
           																  frameP,
           																  subframe,
           																  ENB_FLAG_NO,
@@ -1591,10 +1591,10 @@ for (lcid=DCCH; (lcid < MAX_NUM_LCID) && (is_all_lcid_processed == FALSE) ; lcid
 
   // build PHR and update the timers
   if (phr_ce_len == sizeof(POWER_HEADROOM_CMD)) {
-    phr_p->PH = get_phr_mapping(module_idP,CC_id,eNB_index);
+    phr_p->PH = get_phr_mapping(module_idP,CC_id,eNB_index);/*eNB_index=0*/
     phr_p->R  = 0;
     LOG_D(MAC,"[UE %d] Frame %d report PHR with mapping (%d->%d) for LCID %d\n",
-          module_idP,frameP, mac_xface->get_PHR(module_idP,CC_id,eNB_index), phr_p->PH,POWER_HEADROOM);
+          module_idP,frameP, mac_xface->get_PHR(module_idP,CC_id,eNB_index), phr_p->PH,POWER_HEADROOM);/*eNB_index=0*/
     update_phr(module_idP,CC_id);
   } else {
     phr_p=NULL;
@@ -1836,6 +1836,7 @@ ue_scheduler(
   const int            CC_id)
 //------------------------------------------------------------------------------
 {
+  printf("ue_scheduler: eNB_indexp %d, PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id %d \n",eNB_indexP,PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id);
   int lcid; // lcid index
   int TTI= 1;
   int bucketsizeduration = -1;
@@ -1856,7 +1857,7 @@ ue_scheduler(
 #endif
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_IN);
 
-  PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_NO, UE_mac_inst[module_idP].crnti, txFrameP, txSubframeP,eNB_indexP);
+  PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_NO, UE_mac_inst[module_idP].crnti, txFrameP, txSubframeP,/*eNB_indexP*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id);
 #if defined(ENABLE_ITTI)
 
   do {
@@ -1901,11 +1902,11 @@ ue_scheduler(
   UE_mac_inst[module_idP].rxSubframe = rxSubframeP;
 
 #ifdef CELLULAR
-  rrc_rx_tx(module_idP, txFrameP, 0, eNB_indexP);
+  rrc_rx_tx(module_idP, txFrameP, 0, /*eNB_indexP*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id);
 #else
 
   switch (rrc_rx_tx(&ctxt,
-                    eNB_indexP,
+                    /*eNB_indexP*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,
                     CC_id)) {
   case RRC_OK:
     break;
@@ -1930,7 +1931,7 @@ ue_scheduler(
   case RRC_Handover_failed:
     LOG_N(MAC,"Handover failure for UE %d eNB_index %d\n",module_idP,eNB_indexP);
     //Invalid...need to add another MAC UE state for re-connection procedure
-    mac_xface->phy_config_afterHO_ue(module_idP,0,eNB_indexP,(MobilityControlInfo_t *)NULL,1);
+    mac_xface->phy_config_afterHO_ue(module_idP,0,eNB_indexP,(MobilityControlInfo_t *)NULL,1);//eNB_indexP=0
     //return(3);
     break;
 
@@ -1974,7 +1975,7 @@ ue_scheduler(
       UE_mac_inst[module_idP].RA_contention_resolution_timer_active = 0;
       // Signal PHY to quit RA procedure
       LOG_E(MAC,"Module id %u Contention resolution timer expired, RA failed\n", module_idP);
-      mac_xface->ra_failed(module_idP,0,eNB_indexP);
+      mac_xface->ra_failed(module_idP,0,eNB_indexP);//eNB_indexP=0
     }
   }
 
@@ -2070,8 +2071,8 @@ ue_scheduler(
     } else {
       //LOG_D(MAC,"PHR normal operation %d active %d \n", UE_mac_inst[module_idP].scheduling_info.periodicPHR_SF, UE_mac_inst[module_idP].PHR_reporting_active);
       if ((UE_mac_inst[module_idP].scheduling_info.prohibitPHR_SF <= 0) &&
-          ((mac_xface->get_PL(module_idP,0,eNB_indexP) <  UE_mac_inst[module_idP].scheduling_info.PathlossChange_db) ||
-           (UE_mac_inst[module_idP].power_backoff_db[eNB_indexP] > UE_mac_inst[module_idP].scheduling_info.PathlossChange_db)))
+          ((mac_xface->get_PL(module_idP,0,eNB_indexP) <  UE_mac_inst[module_idP].scheduling_info.PathlossChange_db) ||/*eNB_indexP=0*/
+           (UE_mac_inst[module_idP].power_backoff_db[/*eNB_indexP*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id] > UE_mac_inst[module_idP].scheduling_info.PathlossChange_db)))
         // trigger PHR and reset the timer later when the PHR report is sent
       {
         UE_mac_inst[module_idP].PHR_reporting_active = 1;
@@ -2299,7 +2300,7 @@ boolean_t  update_bsr(module_id_t module_idP, frame_t frameP, sub_frame_t subfra
 			  	lcgid_buffer_remain[lcgid] += UE_mac_inst[module_idP].scheduling_info.LCID_buffer_remain[lcid];
 		  	}
 
-		    rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,eNB_index,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
+		    rlc_status = mac_rlc_status_ind(module_idP, UE_mac_inst[module_idP].crnti,/*eNB_index*/PHY_vars_UE_g[module_idP][0]->common_vars.eNb_id,frameP,subframeP,ENB_FLAG_NO,MBMS_FLAG_NO,
 		                                    lcid,
 		                                    0xFFFF); //TBS is not used in RLC at this step, set a special value for debug
 
@@ -2577,7 +2578,7 @@ void update_phr(module_id_t module_idP,int CC_id)
   UE_mac_inst[module_idP].scheduling_info.prohibitPHR_SF =  get_sf_prohibitPHR_Timer(UE_mac_inst[module_idP].scheduling_info.prohibitPHR_Timer);
   // LOG_D(MAC,"phr %d %d\n ",UE_mac_inst[module_idP].scheduling_info.periodicPHR_SF, UE_mac_inst[module_idP].scheduling_info.prohibitPHR_SF);
 }
-uint8_t get_phr_mapping (module_id_t module_idP, int CC_id, uint8_t eNB_index)
+uint8_t get_phr_mapping (module_id_t module_idP, int CC_id, uint8_t eNB_index)/*eNB_index=0*/
 {
 
   if (CC_id>0) {
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 8dad83a90a71d4a26d155b4be46f3a158df8c469..70295cd85c393649d6a5bbac5732af569463f114 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -927,6 +927,7 @@ pdcp_run (
           RRC_DCCH_DATA_REQ (msg_p).frame, 
 	  0,
 	  RRC_DCCH_DATA_REQ (msg_p).eNB_index);
+        printf("pdcp_run:RRC_DCCH_DATA_REQ: eNB %d, rnti %d\n",RRC_DCCH_DATA_REQ (msg_p).eNB_index,RRC_DCCH_DATA_REQ (msg_p).rnti);
         LOG_I(PDCP, PROTOCOL_CTXT_FMT"Received %s from %s: instance %d, rb_id %d, muiP %d, confirmP %d, mode %d\n",
               PROTOCOL_CTXT_ARGS(&ctxt),
               msg_name,
diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c
index 427ef0c4517fa3696d64f9bd7b138b26d6a89c20..7244f6a31dc0e2e4f786c80e2bde456863ac20c1 100644
--- a/openair2/RRC/LITE/rrc_UE.c
+++ b/openair2/RRC/LITE/rrc_UE.c
@@ -2850,9 +2850,8 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
   if (plmn_data[plmn_ind].mcc < 0) {
     LOG_I( RRC, "Found Unknown operator (no entry in internal table)\n" );
   }
-
   LOG_I( RRC, "cellAccessRelatedInfo.cellIdentity         : raw:%"PRIu32" decoded:%02x.%02x.%02x.%02x\n",
-         BIT_STRING_to_uint32( &sib1->cellAccessRelatedInfo.cellIdentity ),
+         BIT_STRING_to_uint32( &sib1->cellAccessRelatedInfo.cellIdentity)+eNB_index,
          sib1->cellAccessRelatedInfo.cellIdentity.buf[0],
          sib1->cellAccessRelatedInfo.cellIdentity.buf[1],
          sib1->cellAccessRelatedInfo.cellIdentity.buf[2],
@@ -2995,7 +2994,7 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
 
           msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CELL_SELECTION_CNF);
           NAS_CELL_SELECTION_CNF (msg_p).errCode = AS_SUCCESS;
-          NAS_CELL_SELECTION_CNF (msg_p).cellID = BIT_STRING_to_uint32(&sib1->cellAccessRelatedInfo.cellIdentity);
+          NAS_CELL_SELECTION_CNF (msg_p).cellID = BIT_STRING_to_uint32(&sib1->cellAccessRelatedInfo.cellIdentity)+eNB_index;
           NAS_CELL_SELECTION_CNF (msg_p).tac = BIT_STRING_to_uint16(&sib1->cellAccessRelatedInfo.trackingAreaCode);
           NAS_CELL_SELECTION_CNF (msg_p).rat = 0xFF;
           NAS_CELL_SELECTION_CNF (msg_p).rsrq = rsrq;
@@ -4516,7 +4515,7 @@ NAS_KENB_REFRESH_REQ,NAS_CELL_SELECTION_REQ,RRC_STATE_INACTIVE,RRC_STATE_IDLE,RR
             NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit3);
 
       //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, 0);
+      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, PHY_vars_UE_g[ue_mod_id][0]->common_vars.eNb_id);
 
       UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
 
@@ -4555,7 +4554,7 @@ NAS_KENB_REFRESH_REQ,NAS_CELL_SELECTION_REQ,RRC_STATE_INACTIVE,RRC_STATE_IDLE,RR
       length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
 
       /* Transfer data to PDCP */
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0);
+      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,PHY_vars_UE_g[ue_mod_id][0]->common_vars.eNb_id);
 
       // check if SRB2 is created, if yes request data_req on DCCH1 (SRB2) 
       if(UE_rrc_inst[ue_mod_id].SRB2_config[0] == NULL)
@@ -4710,7 +4709,7 @@ NAS_KENB_REFRESH_REQ,NAS_CELL_SELECTION_REQ,RRC_STATE_INACTIVE,RRC_STATE_IDLE,RR
       switch (rrc_get_state(ue_mod_id)) {
       case RRC_STATE_IDLE: {
         if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
-          PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, 0);
+          PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, PHY_vars_UE_g[ue_mod_id][0]->common_vars.eNb_id);
           rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
           LOG_D(RRC, "not sending connection request\n");
           rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
diff --git a/openair2/RRC/LITE/rrc_common.c b/openair2/RRC/LITE/rrc_common.c
index 3f7fa3067c946d5dbba02bcaced61cf227e7c4e3..a3571a1e2f2f8bbad409350e7665274b1ae38a45 100644
--- a/openair2/RRC/LITE/rrc_common.c
+++ b/openair2/RRC/LITE/rrc_common.c
@@ -408,6 +408,7 @@ rrc_rx_tx(
 //-----------------------------------------------------------------------------
 {
   //uint8_t        UE_id;
+  printf("rrc_rx_tx: enb_indexP %d\n",enb_indexP);
   int32_t        current_timestamp_ms, ref_timestamp_ms;
   struct timeval ts;
   struct rrc_eNB_ue_context_s   *ue_context_p = NULL,*ue_to_be_removed = NULL;
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index a423d37617159b6b00b2eb4624cbad843ca9c54e..c26762981274d1eade5a12520d43fd44e8278486 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -848,7 +848,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
                                           proc->frame_tx,
                                           proc->subframe_tx,
                                           subframe_select(&UE->frame_parms,proc->subframe_tx),
-                                          UE->common_vars.eNb_id,
+                                          0,
                                           0/*FIXME CC_id*/);
             if ( ret != CONNECTION_OK) {
                 char *txt;