diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py
index 4ac1b0ea94b200f643ae8add3cbb3110bd91924b..37d648a5b065becafa5218c756de3cc654f4bc61 100644
--- a/ci-scripts/cls_oaicitest.py
+++ b/ci-scripts/cls_oaicitest.py
@@ -185,7 +185,7 @@ class OaiCiTest():
 		SSH.command('mkdir -p log', '\$', 5)
 		SSH.command('chmod 777 log', '\$', 5)
 		# no need to remove in log (git clean did the trick)
-		SSH.command('stdbuf -o0 ./build_oai ' + self.Build_OAI_UE_args + ' 2>&1 | stdbuf -o0 tee compile_oai_ue.log', 'Bypassing the Tests|build have failed', 900)
+		SSH.command('stdbuf -o0 ./build_oai ' + self.Build_OAI_UE_args + ' 2>&1 | stdbuf -o0 tee compile_oai_ue.log', 'Bypassing the Tests|build have failed', 1200)
 		SSH.command('ls ran_build/build', '\$', 3)
 		SSH.command('ls ran_build/build', '\$', 3)
 		buildStatus = True
diff --git a/ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml b/ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
index 7280a87fb8bd44350f295a4160ddeb9fa47b1836..d73a1e26e9f348eed79ecea54521c581a8f7a87e 100644
--- a/ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
+++ b/ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
@@ -32,7 +32,7 @@
 	<testCase id="090101">
 		<class>Build_OAI_UE</class>
 		<desc>Build OAI UE</desc>
-		<Build_OAI_UE_args>-w USRP --UE</Build_OAI_UE_args>
+		<Build_OAI_UE_args>-w USRP --UE --ninja</Build_OAI_UE_args>
 	</testCase>
 
 </testCaseList>
diff --git a/ci-scripts/xml_files/ue_band20_build.xml b/ci-scripts/xml_files/ue_band20_build.xml
index 9ca1a2b2346509748444db85a4792054015cf246..d8679296302aa1f6ae6371a392fb8124cfb1aa17 100644
--- a/ci-scripts/xml_files/ue_band20_build.xml
+++ b/ci-scripts/xml_files/ue_band20_build.xml
@@ -32,7 +32,7 @@
 	<testCase id="090101">
 		<class>Build_OAI_UE</class>
 		<desc>Build OAI UE</desc>
-		<Build_OAI_UE_args>-w USRP --UE</Build_OAI_UE_args>
+		<Build_OAI_UE_args>-w USRP --UE --ninja</Build_OAI_UE_args>
 	</testCase>
 
 </testCaseList>
diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
index ff6495c4932d3ba5deb481721f50acf5b2def392..6b5c1a9b22df56e12fa1336148eb921562ec0b75 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
@@ -239,7 +239,7 @@ void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
   if (decodeSuccess) {
     memcpy(ulsch_harq->b+rdata->offset,
            ulsch_harq->c[r],
-           rdata->Kr_bytes- - (ulsch_harq->F>>3) -((ulsch_harq->C>1)?3:0));
+           rdata->Kr_bytes - (ulsch_harq->F>>3) -((ulsch_harq->C>1)?3:0));
 
   } else {
     if ( rdata->nbSegments != ulsch_harq->processedSegments ) {
diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c
index f2662d9fe67c9109329a126efad10da9dcbc49f8..afebe4ed9736c87381c6141a8babf8b8bf345bc5 100644
--- a/openair1/SIMULATION/NR_PHY/ulschsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulschsim.c
@@ -81,7 +81,7 @@ int nr_postDecode_sim(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
   if (decodeSuccess) {
     memcpy(ulsch_harq->b+rdata->offset,
            ulsch_harq->c[r],
-           rdata->Kr_bytes- - (ulsch_harq->F>>3) -((ulsch_harq->C>1)?3:0));
+           rdata->Kr_bytes - (ulsch_harq->F>>3) -((ulsch_harq->C>1)?3:0));
   } else {
     if ( rdata->nbSegments != ulsch_harq->processedSegments ) {
       int nb=abortTpool(gNB->threadPool, req->key);
diff --git a/openair2/COMMON/x2ap_messages_types.h b/openair2/COMMON/x2ap_messages_types.h
index 08ecde26a0dbef554cbb35a00f9221249181fde7..0c55764d6e2602b9dd94948e0fcc1960e150df6a 100644
--- a/openair2/COMMON/x2ap_messages_types.h
+++ b/openair2/COMMON/x2ap_messages_types.h
@@ -122,6 +122,8 @@ typedef struct x2ap_register_enb_req_s {
    * CC Params
    */
   int16_t                 eutra_band[MAX_NUM_CCs];
+  int32_t                 nr_band[MAX_NUM_CCs];
+  int32_t                 nrARFCN[MAX_NUM_CCs];
   uint32_t                downlink_frequency[MAX_NUM_CCs];
   int32_t                 uplink_frequency_offset[MAX_NUM_CCs];
   uint32_t                Nid_cell[MAX_NUM_CCs];
diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index 074bfb413f347614e23223fb1b3dee17470dcd1b..5f74d6121fbdea0ca505a32e182c76312aa04832 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -34,6 +34,7 @@
 #include "common/utils/LOG/log_extern.h"
 #include "assertions.h"
 #include "gnb_config.h"
+#include "gnb_paramdef.h"
 #include "UTIL/OTG/otg.h"
 #include "UTIL/OTG/otg_externs.h"
 #include "intertask_interface.h"
@@ -1031,27 +1032,32 @@ void NRRCConfig(void) {
 
 }
 
+
 int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
   int   J, l;
   char *address = NULL;
   char *cidr    = NULL;
-
   //int                    num_gnbs                                                      = 0;
   //int                    num_component_carriers                                        = 0;
   int                    j,k                                                           = 0;
   int32_t                gnb_id                                                        = 0;
 
   paramdef_t GNBSParams[] = GNBSPARAMS_DESC;
+  ////////// Identification parameters
   paramdef_t GNBParams[]  = GNBPARAMS_DESC;
   paramlist_def_t GNBParamList = {GNB_CONFIG_STRING_GNB_LIST,NULL,0};
   /* get global parameters, defined outside any section in the config file */
   config_get( GNBSParams,sizeof(GNBSParams)/sizeof(paramdef_t),NULL);
-
-  //paramlist_def_t SCCsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, NULL, 0};
+  NR_ServingCellConfigCommon_t *scc = calloc(1,sizeof(NR_ServingCellConfigCommon_t));
+  uint64_t ssb_bitmap=0xff;
+  memset((void*)scc,0,sizeof(NR_ServingCellConfigCommon_t));
+  prepare_scc(scc);
+  paramdef_t SCCsParams[] = SCCPARAMS_DESC(scc);
+  paramlist_def_t SCCsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, NULL, 0};
 
   AssertFatal(i < GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt,
               "Failed to parse config file %s, %uth attribute %s \n",
-              RC.config_file_name, i, ENB_CONFIG_STRING_ACTIVE_ENBS);
+              RC.config_file_name, i, GNB_CONFIG_STRING_ACTIVE_GNBS);
 
   if (GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt > 0) {
     // Output a list of all gNBs.
@@ -1121,19 +1127,28 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
                         "MNC %d cannot be encoded in two digits as requested (change mnc_digit_length to 3)\n",
                         X2AP_REGISTER_ENB_REQ(msg_p).mnc);
 
-            X2AP_REGISTER_ENB_REQ (msg_p).num_cc = 1;
-            J = 0;
-            X2AP_REGISTER_ENB_REQ (msg_p).eutra_band[J] = 78; //ccparams_nr_x2.nr_band; //78
-            X2AP_REGISTER_ENB_REQ (msg_p).downlink_frequency[J] = 3600000000; //ccparams_nr_x2.downlink_frequency; //3600000000
-            X2AP_REGISTER_ENB_REQ (msg_p).uplink_frequency_offset[J] = 0; //(unsigned int) ccparams_nr_x2.uplink_frequency_offset; //0
-            X2AP_REGISTER_ENB_REQ (msg_p).Nid_cell[J]= 0; //ccparams_nr_x2.Nid_cell; //0
-            X2AP_REGISTER_ENB_REQ (msg_p).N_RB_DL[J]= 106; //ccparams_nr_x2.N_RB_DL; //106
-
-            X2AP_REGISTER_ENB_REQ (msg_p).frame_type[J] = TDD;
+            sprintf(aprefix, "%s.[%i]", GNB_CONFIG_STRING_GNB_LIST, 0);
 
-            //Temp out
-            /*X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_DL[J] = to_earfcn_DL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency, ccparams_lte.N_RB_DL);
-              X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_UL[J] = to_earfcn_UL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency + ccparams_lte.uplink_frequency_offset, ccparams_lte.N_RB_DL);*/
+            config_getlist(&SCCsParamList, NULL, 0, aprefix);
+            if (SCCsParamList.numelt > 0) {
+              sprintf(aprefix, "%s.[%i].%s.[%i]", GNB_CONFIG_STRING_GNB_LIST,0,GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, 0);
+              config_get( SCCsParams,sizeof(SCCsParams)/sizeof(paramdef_t),aprefix);
+              fix_scc(scc,ssb_bitmap);
+            }
+            X2AP_REGISTER_ENB_REQ (msg_p).num_cc = SCCsParamList.numelt;
+            for (J = 0; J < SCCsParamList.numelt ; J++) {
+              X2AP_REGISTER_ENB_REQ (msg_p).nr_band[J] = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; //nr_band; //78
+              X2AP_REGISTER_ENB_REQ (msg_p).nrARFCN[J] = scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA;
+              X2AP_REGISTER_ENB_REQ (msg_p).uplink_frequency_offset[J] = scc->uplinkConfigCommon->frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->offsetToCarrier; //0
+              X2AP_REGISTER_ENB_REQ (msg_p).Nid_cell[J]= *scc->physCellId; //0
+              X2AP_REGISTER_ENB_REQ (msg_p).N_RB_DL[J]=  scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth;//106
+              X2AP_REGISTER_ENB_REQ (msg_p).frame_type[J] = TDD;
+              LOG_I(X2AP, "gNB configuration parameters: nr_band: %d, nr_ARFCN: %d, DL_RBs: %d, num_cc: %d \n",
+                  X2AP_REGISTER_ENB_REQ (msg_p).nr_band[J],
+                  X2AP_REGISTER_ENB_REQ (msg_p).nrARFCN[J],
+                  X2AP_REGISTER_ENB_REQ (msg_p).N_RB_DL[J],
+                  X2AP_REGISTER_ENB_REQ (msg_p).num_cc);
+            }
 
             sprintf(aprefix,"%s.[%i]",GNB_CONFIG_STRING_GNB_LIST,k);
             config_getlist( &X2ParamList,X2Params,sizeof(X2Params)/sizeof(paramdef_t),aprefix);
@@ -1222,4 +1237,3 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
   return 0;
 }
 
-
diff --git a/openair2/GNB_APP/gnb_paramdef.h b/openair2/GNB_APP/gnb_paramdef.h
index b4ce7c325f8482427a589eea83aa78086751e12d..35bc762c8859b9c372e5fead9b61572f362e2649 100644
--- a/openair2/GNB_APP/gnb_paramdef.h
+++ b/openair2/GNB_APP/gnb_paramdef.h
@@ -118,30 +118,6 @@ typedef enum {
 #define GNB_CONFIG_STRING_PUSCHTARGETPOWX10             "pusch_TargetSNRx10"
 #define GNB_CONFIG_STRING_PUCCHTARGETPOWX10             "pucch_TargetSNRx10"
 
-
-typedef struct ccparams_nr_x2 {
-  char             *frame_type;
-  int32_t           tdd_config;
-  int32_t           tdd_config_s;
-  int32_t           nr_band;
-  long long int     downlink_frequency;
-  int32_t           uplink_frequency_offset;
-  int32_t           Nid_cell;
-  int32_t           N_RB_DL;
-  } ccparams_nr_x2_t;
-
-
-#define CCPARAMS_NR_X2_DESC(ccparams) {         \
-    {ENB_CONFIG_STRING_FRAME_TYPE,                                   NULL,   0,           strptr:&ccparams.frame_type,                             defstrval:"TDD",           TYPE_STRING,     0},  \
-    {ENB_CONFIG_STRING_TDD_CONFIG,                                   NULL,   0,           iptr:&ccparams.tdd_config,                               defintval:3,               TYPE_UINT,       0},  \
-    {ENB_CONFIG_STRING_TDD_CONFIG_S,                                 NULL,   0,           iptr:&ccparams.tdd_config_s,                             defintval:0,               TYPE_UINT,       0},  \
-    {ENB_CONFIG_STRING_EUTRA_BAND,                                   NULL,   0,           iptr:&ccparams.nr_band,                               defintval:78,               TYPE_UINT,       0},  \
-    {ENB_CONFIG_STRING_DOWNLINK_FREQUENCY,                           NULL,   0,           i64ptr:(int64_t *)&ccparams.downlink_frequency,          defint64val:3600000000,    TYPE_UINT64,     0},  \
-    {ENB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET,                      NULL,   0,           iptr:&ccparams.uplink_frequency_offset,                  defintval:0,      TYPE_INT,        0},  \
-    {ENB_CONFIG_STRING_NID_CELL,                                     NULL,   0,           iptr:&ccparams.Nid_cell,                                 defintval:0,               TYPE_UINT,       0},  \
-    {ENB_CONFIG_STRING_N_RB_DL,                                      NULL,   0,           iptr:&ccparams.N_RB_DL,                                  defintval:106,              TYPE_UINT,       0}  \
-}
-
 /*-----------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                            cell configuration parameters                                                                */
 /*   optname                                   helpstr   paramflags    XXXptr        defXXXval                   type           numelt     */
diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index 8f5aab99a7706f1b858ac045f6e7ea5d33dcef34..9a00fa1184ae86ef3711a74c9c50ed1a231191a8 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -914,7 +914,9 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
 
 #if (!defined(PRE_SCD_THREAD))
   if (!NODE_IS_DU(RC.rrc[module_idP]->node_type)) {
+    void rlc_tick(int, int);
     PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frameP, subframeP, module_idP);
+    rlc_tick(frameP, subframeP);
     pdcp_run(&ctxt);
     pdcp_mbms_run(&ctxt);
     rrc_rx_tx(&ctxt, CC_id);
diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index e97f1bebddab7afaf76d161666b8dc5b159e7338..8c4ee72380ae677ce3cb95bce4f8181c0d4ea040 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -3099,6 +3099,9 @@ ue_scheduler(const module_id_t module_idP,
     }
   }
 
+  void rlc_tick(int, int);
+  rlc_tick(rxFrameP % 1024, rxSubframeP);
+
   //#endif
   UE_mac_inst[module_idP].txFrame = txFrameP;
   UE_mac_inst[module_idP].txSubframe = txSubframeP;
diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
index 85f638d66d9b5b87a2795ea5861013cf577e408c..16d306f64c55fb596d3ef9b5c7000e50f00cc3ca 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
@@ -40,7 +40,7 @@ void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *_entity, char *buffer, int
 {
   nr_pdcp_entity_drb_am_t *entity = (nr_pdcp_entity_drb_am_t *)_entity;
   int sn;
-  char buf[size+2];
+  char buf[size+3];
 
   sn = entity->common.next_nr_pdcp_tx_sn;
 
diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
index 3a46f913e91d1ca65776c0017a095a9e2ea0f5b9..2ed01b5b7806e1159ed85a95914222d6f0798c08 100644
--- a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
+++ b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
@@ -923,3 +923,13 @@ void nr_rlc_tick(int frame, int subframe)
     nr_rlc_current_time++;
   }
 }
+
+/* This is a hack, to compile the gNB.
+ * TODO: remove it. The solution is to cleanup cmake_targets/CMakeLists.txt
+ */
+void rlc_tick(int a, int b)
+{
+  LOG_E(RLC, "%s:%d:%s: this code should not be reached\n",
+        __FILE__, __LINE__, __FUNCTION__);
+  exit(1);
+}
diff --git a/openair2/LAYER2/rlc_v2/rlc_oai_api.c b/openair2/LAYER2/rlc_v2/rlc_oai_api.c
index bd3eebe6355f487690178f08f31246627b444438..5fede07c0154aec0e338b96338d3fff38ac0bcbc 100644
--- a/openair2/LAYER2/rlc_v2/rlc_oai_api.c
+++ b/openair2/LAYER2/rlc_v2/rlc_oai_api.c
@@ -177,14 +177,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
   mac_rlc_status_resp_t ret;
   rlc_entity_t *rb;
 
-  /* TODO: handle time a bit more properly */
-  if (rlc_current_time_last_frame != frameP ||
-      rlc_current_time_last_subframe != subframeP) {
-    rlc_current_time++;
-    rlc_current_time_last_frame = frameP;
-    rlc_current_time_last_subframe = subframeP;
-  }
-
   rlc_manager_lock(rlc_ue_manager);
   ue = rlc_manager_get_ue(rlc_ue_manager, rntiP);
 
@@ -244,14 +236,6 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind(
     exit(1);
   }
 
-  /* TODO: handle time a bit more properly */
-  if (rlc_current_time_last_frame != frameP ||
-      rlc_current_time_last_subframe != subframeP) {
-    rlc_current_time++;
-    rlc_current_time_last_frame = frameP;
-    rlc_current_time_last_subframe = subframeP;
-  }
-
   rlc_manager_lock(rlc_ue_manager);
   ue = rlc_manager_get_ue(rlc_ue_manager, rntiP);
 
@@ -1028,3 +1012,27 @@ rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x)
 
   return RLC_OP_STATUS_OK;
 }
+
+void rlc_tick(int frame, int subframe)
+{
+  int expected_next_frame;
+  int expected_next_subframe;
+
+  if (frame != rlc_current_time_last_frame ||
+      subframe != rlc_current_time_last_subframe) {
+    /* warn if discontinuity in ticks */
+    expected_next_subframe = (rlc_current_time_last_subframe + 1) % 10;
+    if (expected_next_subframe == 0)
+      expected_next_frame = (rlc_current_time_last_frame + 1) % 1024;
+    else
+      expected_next_frame = rlc_current_time_last_frame;
+    if (expected_next_frame != frame || expected_next_subframe != subframe)
+      LOG_W(RLC, "rlc_tick: discontinuity (expected %d.%d, got %d.%d)\n",
+            expected_next_frame, expected_next_subframe,
+            frame, subframe);
+
+    rlc_current_time++;
+    rlc_current_time_last_frame = frame;
+    rlc_current_time_last_subframe = subframe;
+  }
+}
diff --git a/openair2/X2AP/x2ap_eNB.c b/openair2/X2AP/x2ap_eNB.c
index 4789efeebe82b33f926e8b7ca14c904cc24e3d6b..7e4f735705548e9793926232a772b32cbd986930 100644
--- a/openair2/X2AP/x2ap_eNB.c
+++ b/openair2/X2AP/x2ap_eNB.c
@@ -310,14 +310,21 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
                      x2ap_register_eNB->t_dc_overall);
 
     for (int i = 0; i< x2ap_register_eNB->num_cc; i++) {
-      new_instance->eutra_band[i]              = x2ap_register_eNB->eutra_band[i];
-      new_instance->downlink_frequency[i]      = x2ap_register_eNB->downlink_frequency[i];
+      if(new_instance->cell_type == CELL_MACRO_GNB){
+        new_instance->nr_band[i]              = x2ap_register_eNB->nr_band[i];
+        new_instance->tdd_nRARFCN[i]             = x2ap_register_eNB->nrARFCN[i];
+      }
+      else{
+        new_instance->eutra_band[i]              = x2ap_register_eNB->eutra_band[i];
+        new_instance->downlink_frequency[i]      = x2ap_register_eNB->downlink_frequency[i];
+        new_instance->fdd_earfcn_DL[i]           = x2ap_register_eNB->fdd_earfcn_DL[i];
+        new_instance->fdd_earfcn_UL[i]           = x2ap_register_eNB->fdd_earfcn_UL[i];
+      }
+
       new_instance->uplink_frequency_offset[i] = x2ap_register_eNB->uplink_frequency_offset[i];
       new_instance->Nid_cell[i]                = x2ap_register_eNB->Nid_cell[i];
       new_instance->N_RB_DL[i]                 = x2ap_register_eNB->N_RB_DL[i];
       new_instance->frame_type[i]              = x2ap_register_eNB->frame_type[i];
-      new_instance->fdd_earfcn_DL[i]           = x2ap_register_eNB->fdd_earfcn_DL[i];
-      new_instance->fdd_earfcn_UL[i]           = x2ap_register_eNB->fdd_earfcn_UL[i];
     }
 
     DevCheck(x2ap_register_eNB->nb_x2 <= X2AP_MAX_NB_ENB_IP_ADDRESS,
diff --git a/openair2/X2AP/x2ap_eNB_defs.h b/openair2/X2AP/x2ap_eNB_defs.h
index 3d8efd8cd4161c4865e85340d3fc549c8315bd1d..063302d03abf7fce76f4307a272ba2def99afc10 100644
--- a/openair2/X2AP/x2ap_eNB_defs.h
+++ b/openair2/X2AP/x2ap_eNB_defs.h
@@ -179,6 +179,7 @@ typedef struct x2ap_eNB_instance_s {
   uint32_t                specialSubframe[MAX_NUM_CCs];
 
 //#ifdef Rel15
+  int32_t                 nr_band[MAX_NUM_CCs];
   uint32_t				  tdd_nRARFCN[MAX_NUM_CCs];
   int16_t                 nr_SCS[MAX_NUM_CCs];
 //#endif
diff --git a/openair2/X2AP/x2ap_eNB_generate_messages.c b/openair2/X2AP/x2ap_eNB_generate_messages.c
index 1e549d8cbebb82bdc030dc73035335491919cda7..e066535df931cb6b77b1df610d1b3ba46b7433fd 100644
--- a/openair2/X2AP/x2ap_eNB_generate_messages.c
+++ b/openair2/X2AP/x2ap_eNB_generate_messages.c
@@ -39,7 +39,6 @@
 #include "x2ap_ids.h"
 
 #include "x2ap_eNB_itti_messaging.h"
-#include "X2AP_SupportedSULFreqBandItem.h"
 
 #include "msc.h"
 #include "assertions.h"
@@ -1236,7 +1235,6 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(
   X2AP_En_gNB_ENDCX2SetupReqIEs_t 			 *ie_GNB_ENDC;
   X2AP_PLMN_Identity_t               	 *plmn;
   ServedNRcellsENDCX2ManagementList__Member                *servedCellMember;
-  X2AP_SupportedSULFreqBandItem_t *SULFreqBandItem;
 
   uint8_t  *buffer;
   uint32_t  len;
@@ -1284,8 +1282,8 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
   ie_GNB_ENDC->value.present = X2AP_En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList;
 
   {
-      for (int i = 0; i<instance_p->num_cc; i++){
-        servedCellMember = (ServedNRcellsENDCX2ManagementList__Member *)calloc(1,sizeof(ServedNRcellsENDCX2ManagementList__Member));
+    for (int i = 0; i<instance_p->num_cc; i++){
+      servedCellMember = (ServedNRcellsENDCX2ManagementList__Member *)calloc(1,sizeof(ServedNRcellsENDCX2ManagementList__Member));
         {
           servedCellMember->servedNRCellInfo.nrpCI = instance_p->Nid_cell[i];
 
@@ -1299,60 +1297,63 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
           NR_FIVEGS_TAC_ID_TO_BIT_STRING(instance_p->tac, servedCellMember->servedNRCellInfo.fiveGS_TAC);
 
           X2AP_INFO("TAC: %d -> %02x%02x%02x\n", instance_p->tac,
-        		  	  servedCellMember->servedNRCellInfo.fiveGS_TAC->buf[0],
-					  servedCellMember->servedNRCellInfo.fiveGS_TAC->buf[1],
-					  servedCellMember->servedNRCellInfo.fiveGS_TAC->buf[2]);
+              servedCellMember->servedNRCellInfo.fiveGS_TAC->buf[0],
+              servedCellMember->servedNRCellInfo.fiveGS_TAC->buf[1],
+              servedCellMember->servedNRCellInfo.fiveGS_TAC->buf[2]);
 
           plmn = (X2AP_PLMN_Identity_t *)calloc(1,sizeof(X2AP_PLMN_Identity_t));
           {
             MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length, plmn);
             ASN_SEQUENCE_ADD(&servedCellMember->servedNRCellInfo.broadcastPLMNs.list, plmn);
           }
-
-  	if (instance_p->frame_type[i] == TDD) {
+          if (instance_p->frame_type[i] == TDD) {
             X2AP_FreqBandNrItem_t *freq_band;
             servedCellMember->servedNRCellInfo.nrModeInfo.present = X2AP_ServedNRCell_Information__nrModeInfo_PR_tdd;
-            servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nRFreqInfo.nRARFCN = 0; //instance_p->tdd_nRARFCN[i];
+            servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nRFreqInfo.nRARFCN = instance_p->tdd_nRARFCN[i];
             /* addition of Frequency Band List */
             freq_band = calloc(1, sizeof(X2AP_FreqBandNrItem_t));
             if (freq_band == NULL)
                exit(1);
-            freq_band->freqBandIndicatorNr = instance_p->eutra_band[0];
-
-            SULFreqBandItem = calloc(1, sizeof(X2AP_SupportedSULFreqBandItem_t));
-            SULFreqBandItem->freqBandIndicatorNr=80; /* TODO: put correct value */
-            ASN_SEQUENCE_ADD(&freq_band->supportedSULBandList.list, SULFreqBandItem);
+            freq_band->freqBandIndicatorNr = instance_p->nr_band[i];
 
             ASN_SEQUENCE_ADD(&servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nRFreqInfo.freqBandListNr, freq_band);
             switch (instance_p->N_RB_DL[i]) {
-        	case 50:
-			//This is not correct. Just to be able to test X2 only using an eNB instead of gNB
-                	servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb51;
-			break;
-		case 93 :
-			servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb93;
-			break;
-		case 106:
-			servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb106;
-			break;
-		case 121:
-			servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb121;
-			break;
-		/*More cases to be added */
-		default:
-			AssertFatal(0,"Failed: Check value for N_RB_DL/N_RB_UL");
+            case 32:
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb32;
+              break;
+            case 66:
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb66;
+              break;
+            case 93 :
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb93;
+              break;
+            case 106:
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb106;
+              break;
+            case 121:
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb121;
+              break;
+            case 217:
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb217;
+              break;
+            case 273:
+              servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb273;
+              break;
+              /*More cases to be added */
+            default:
+              AssertFatal(0,"Failed: Check value for N_RB_DL/N_RB_UL");
 			break;
-		}
-	}
+            }
+          }
           else {
             AssertFatal(0,"ENDC_X2Setuprequest not supported for FDD!");
           }
-  	/*Don't know where to extract the value of measurementTimingConfiguration from. Set it to 0 for now */
-  	INT8_TO_OCTET_STRING(0, &servedCellMember->servedNRCellInfo.measurementTimingConfiguration);
+          /*Don't know where to extract the value of measurementTimingConfiguration from. Set it to 0 for now */
+          INT8_TO_OCTET_STRING(0, &servedCellMember->servedNRCellInfo.measurementTimingConfiguration);
         }
         ASN_SEQUENCE_ADD(&ie_GNB_ENDC->value.choice.ServedNRcellsENDCX2ManagementList.list, servedCellMember);
-      }
     }
+  }
   ASN_SEQUENCE_ADD(&ie->value.choice.InitiatingNodeType_EndcX2Setup.choice.init_en_gNB.list, ie_GNB_ENDC);
 
 
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index e3b9797105a40bc187d374cd8ac2a47a7d128529..4e3a6612736a9ea4e8ed9cf468d55f7c8e8aa50e 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -2017,6 +2017,7 @@ void *ru_thread_synch(void *arg) {
 
 #if defined(PRE_SCD_THREAD)
 void *pre_scd_thread( void *param ) {
+  void rlc_tick(int, int);
   static int              eNB_pre_scd_status;
   protocol_ctxt_t         ctxt;
   int                     frame;
@@ -2051,6 +2052,7 @@ void *pre_scd_thread( void *param ) {
     AssertFatal((ret=pthread_mutex_unlock(&ru->proc.mutex_pre_scd))==0,"mutex_unlock returns %d\n",ret);
     PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, Mod_id, ENB_FLAG_YES,
                                    NOT_A_RNTI, frame, subframe,Mod_id);
+    rlc_tick(frame, subframe);
     pdcp_run(&ctxt);
 
     for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {