diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index ab87dd0eb227749b88af44d9603ba3c907bf44c7..f05b14ebe3dbdf96dd720b35e57513384dc13b3a 100755
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -308,6 +308,11 @@ extern int asn_debug;
 extern int asn1_xer_print;
 #endif
 
+#ifdef LIBCONFIG_LONG
+#define libconfig_int long
+#else
+#define libconfig_int int
+#endif
 const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) {
   config_t          cfg;
   config_setting_t *setting                       = NULL;
@@ -325,83 +330,83 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) {
   int               i;
   int               j;
   int               parse_errors                  = 0;
-  int               enb_id                        = 0;
+  libconfig_int     enb_id                        = 0;
   const char*       cell_type                     = NULL;
   const char*       tac                           = 0;
   const char*       enb_name                      = NULL;
   const char*       mcc                           = 0;
   const char*       mnc                           = 0;
   const char*       frame_type;
-  int          tdd_config;
-  int          tdd_config_s;
+  libconfig_int          tdd_config;
+  libconfig_int          tdd_config_s;
   const char*       prefix_type;
-  int          eutra_band;
+  libconfig_int          eutra_band;
   int64_t     downlink_frequency;
-  int          uplink_frequency_offset;
-  int          Nid_cell;
-  int          Nid_cell_mbsfn;
-  int          N_RB_DL;
-  int	    nb_antennas_tx;   
-  int          nb_antennas_rx;   
-  int          prach_root;   
-  int          prach_config_index; 
+  libconfig_int          uplink_frequency_offset;
+  libconfig_int          Nid_cell;
+  libconfig_int          Nid_cell_mbsfn;
+  libconfig_int          N_RB_DL;
+  libconfig_int	    nb_antennas_tx;   
+  libconfig_int          nb_antennas_rx;   
+  libconfig_int          prach_root;   
+  libconfig_int          prach_config_index; 
   const char*          prach_high_speed; 
-  int          prach_zero_correlation; 
-  int          prach_freq_offset; 
-  int          pucch_delta_shift; 
-  int          pucch_nRB_CQI; 
-  int          pucch_nCS_AN;
+  libconfig_int          prach_zero_correlation; 
+  libconfig_int          prach_freq_offset; 
+  libconfig_int          pucch_delta_shift; 
+  libconfig_int          pucch_nRB_CQI; 
+  libconfig_int          pucch_nCS_AN;
 #ifndef Rel10 
-  int          pucch_n1_AN; 
+  libconfig_int          pucch_n1_AN; 
 #endif
-  int          pdsch_referenceSignalPower; 
-  int          pdsch_p_b; 
-  int          pusch_n_SB;
+  libconfig_int          pdsch_referenceSignalPower; 
+  libconfig_int          pdsch_p_b; 
+  libconfig_int          pusch_n_SB;
   const char *      pusch_hoppingMode;
-  int          pusch_hoppingOffset;
+  libconfig_int          pusch_hoppingOffset;
   const char*          pusch_enable64QAM; 
   const char*          pusch_groupHoppingEnabled; 
-  int          pusch_groupAssignment; 
+  libconfig_int          pusch_groupAssignment; 
   const char*          pusch_sequenceHoppingEnabled; 
-  int          pusch_nDMRS1; 
+  libconfig_int          pusch_nDMRS1; 
   const char*       phich_duration; 
   const char*          phich_resource; 
   const char*          srs_enable; 
-  int          srs_BandwidthConfig; 
-  int          srs_SubframeConfig; 
+  libconfig_int          srs_BandwidthConfig; 
+  libconfig_int          srs_SubframeConfig; 
   const char*          srs_ackNackST; 
   const char*          srs_MaxUpPts;
-  int          pusch_p0_Nominal; 
+  libconfig_int          pusch_p0_Nominal; 
   const char*          pusch_alpha; 
-  int          pucch_p0_Nominal; 
-  int          msg3_delta_Preamble;
-  int          ul_CyclicPrefixLength;
+  libconfig_int          pucch_p0_Nominal; 
+  libconfig_int          msg3_delta_Preamble;
+  libconfig_int          ul_CyclicPrefixLength;
   const char*          pucch_deltaF_Format1; 
   const char*          pucch_deltaF_Format1a; 
   const char*          pucch_deltaF_Format1b; 
   const char*          pucch_deltaF_Format2; 
   const char*          pucch_deltaF_Format2a; 
   const char*          pucch_deltaF_Format2b; 
-  int              rach_numberOfRA_Preambles; 
+  libconfig_int              rach_numberOfRA_Preambles; 
   const char*       rach_preamblesGroupAConfig;
-  int	            rach_sizeOfRA_PreamblesGroupA;
-  int	            rach_messageSizeGroupA;
+  libconfig_int	            rach_sizeOfRA_PreamblesGroupA;
+  libconfig_int	            rach_messageSizeGroupA;
   const char*       rach_messagePowerOffsetGroupB;
-  int              rach_powerRampingStep; 
-  int              rach_preambleInitialReceivedTargetPower; 
-  int              rach_preambleTransMax; 
-  int              rach_raResponseWindowSize; 
-  int              rach_macContentionResolutionTimer;
-  int              rach_maxHARQ_Msg3Tx;
-  int              pcch_defaultPagingCycle;
+  libconfig_int              rach_powerRampingStep; 
+  libconfig_int              rach_preambleInitialReceivedTargetPower; 
+  libconfig_int              rach_preambleTransMax; 
+  libconfig_int              rach_raResponseWindowSize; 
+  libconfig_int              rach_macContentionResolutionTimer;
+  libconfig_int              rach_maxHARQ_Msg3Tx;
+  libconfig_int              pcch_defaultPagingCycle;
   const char*       pcch_nB;
-  int              bcch_modificationPeriodCoeff;
-  int              ue_TimersAndConstants_t300;
-  int              ue_TimersAndConstants_t301;
-  int              ue_TimersAndConstants_t310;
-  int              ue_TimersAndConstants_t311;
-  int              ue_TimersAndConstants_n310;
-  int              ue_TimersAndConstants_n311;
+  libconfig_int              bcch_modificationPeriodCoeff;
+  libconfig_int              ue_TimersAndConstants_t300;
+  libconfig_int              ue_TimersAndConstants_t301;
+  libconfig_int              ue_TimersAndConstants_t310;
+  libconfig_int              ue_TimersAndConstants_t311;
+  libconfig_int              ue_TimersAndConstants_n310;
+  libconfig_int              ue_TimersAndConstants_n311;
 
 
  
diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index 60a5c9b9e73ff48c55ce947d7adb4ac3c063f4a0..6093e7d8a9f8fcb44477ca6caef2899070e91765 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -99,7 +99,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
   int CC_id,i,next_i;
   UE_list_t *UE_list=&eNB_mac_inst[module_idP].UE_list;
 
-  LOG_D(MAC,"[eNB %d] Frame %d, Subframe %d, entering MAC scheduler\n",module_idP, frameP, subframeP);
+  //  LOG_I(MAC,"[eNB %d] Frame %d, Subframe %d, entering MAC scheduler (UE_list->head %d)\n",module_idP, frameP, subframeP,UE_list->head);
 
   start_meas(&eNB_mac_inst[module_idP].eNB_scheduler);
   vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_IN);
@@ -111,6 +111,12 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
     RBalloc[CC_id]=0;
     mbsfn_status[CC_id]=0;
   }
+  // refresh UE list based on UEs dropped by PHY in previous subframe
+  for (i=UE_list->head;i>0;i=UE_list->next[i]) {
+    LOG_I(MAC,"UE %d: rnti %x (%p)\n",i,UE_RNTI(module_idP,i),mac_xface->get_eNB_UE_stats(module_idP,0,UE_RNTI(module_idP,i)));
+    if (mac_xface->get_eNB_UE_stats(module_idP,0,UE_RNTI(module_idP,i))==NULL)
+      mac_remove_ue(module_idP,i);
+  }
 #if defined(ENABLE_ITTI)
   do {
       // Checks if a message has been sent to MAC sub-task