diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
index 682105d0975c52277a0c1c18e01da5a1daa40713..b1f70a0822f1dc1d5cfe4bbf498f843c5859d72f 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
@@ -1358,6 +1358,20 @@ int flexran_agent_register_mac_xface(mid_t mod_id)
   return 0;
 }
 
+void flexran_agent_fill_mac_cell_config(mid_t mod_id, uint8_t cc_id,
+    Protocol__FlexCellConfig *conf) {
+  if (!conf->si_config) {
+    conf->si_config = malloc(sizeof(Protocol__FlexSiConfig));
+    if (conf->si_config)
+      protocol__flex_si_config__init(conf->si_config);
+  }
+
+  if (conf->si_config) {
+    conf->si_config->sfn = flexran_get_current_system_frame_num(mod_id);
+    conf->si_config->has_sfn = 1;
+  }
+}
+
 int flexran_agent_unregister_mac_xface(mid_t mod_id)
 {
   if (!agent_mac_xface[mod_id]) {
diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h
index cabd6f949b1b00aa8197e331fcb53e444bdc7845..af93674f0c8a7f5c0bd7acc6f23e915aad87508e 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h
+++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h
@@ -83,6 +83,10 @@ void flexran_agent_send_update_mac_stats(mid_t mod_id);
 /// Provide to the scheduler a pending dl_mac_config message
 void flexran_agent_get_pending_dl_mac_config(mid_t mod_id, Protocol__FlexranMessage **msg);
 
+/* Fill the MAC part of an cell_config message */
+void flexran_agent_fill_mac_cell_config(mid_t mod_id, uint8_t cc_id,
+    Protocol__FlexCellConfig *conf);
+
 /*Register technology specific interface callbacks*/
 int flexran_agent_register_mac_xface(mid_t mod_id);
 
diff --git a/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c b/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
index 745659c949e3f8ce80203e25bb4f842f7fcbddae..2f8726293813d900635ed893584c2ecb16049c1e 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
@@ -26,17 +26,133 @@
  */
 
 #include "flexran_agent_phy.h"
+#include "flexran_agent_ran_api.h"
 
 /* Array containing the Agent-PHY interfaces */
 AGENT_PHY_xface *agent_phy_xface[NUM_MAX_ENB];
 
-int flexran_agent_register_phy_xface(mid_t mod_id)
-{
+void flexran_agent_fill_phy_cell_config(mid_t mod_id, uint8_t cc_id,
+                                        Protocol__FlexCellConfig *conf) {
+  conf->phy_cell_id = flexran_get_cell_id(mod_id, cc_id);
+  conf->has_phy_cell_id = 1;
+
+  conf->pusch_hopping_offset = flexran_get_hopping_offset(mod_id, cc_id);
+  conf->has_pusch_hopping_offset = 1;
+
+  conf->hopping_mode = flexran_get_hopping_mode(mod_id, cc_id);
+  conf->has_hopping_mode = 1;
+
+  conf->n_sb = flexran_get_n_SB(mod_id, cc_id);
+  conf->has_n_sb = 1;
+
+  conf->phich_resource = flexran_get_phich_resource(mod_id, cc_id);
+  conf->has_phich_resource = 1;
+
+  conf->phich_duration = flexran_get_phich_duration(mod_id, cc_id);
+  conf->has_phich_duration = 1;
+
+  conf->init_nr_pdcch_ofdm_sym = flexran_get_num_pdcch_symb(mod_id, cc_id);
+  conf->has_init_nr_pdcch_ofdm_sym = 1;
+
+  conf->dl_bandwidth = flexran_get_N_RB_DL(mod_id, cc_id);
+  conf->has_dl_bandwidth = 1;
+
+  conf->ul_bandwidth = flexran_get_N_RB_UL(mod_id, cc_id);
+  conf->has_ul_bandwidth = 1;
+
+  conf->ul_cyclic_prefix_length = flexran_get_ul_cyclic_prefix_length(mod_id,  cc_id);
+  conf->has_ul_cyclic_prefix_length = 1;
+
+  conf->dl_cyclic_prefix_length = flexran_get_dl_cyclic_prefix_length(mod_id, cc_id);
+  conf->has_dl_cyclic_prefix_length = 1;
+
+  conf->antenna_ports_count = flexran_get_antenna_ports(mod_id,  cc_id);
+  conf->has_antenna_ports_count = 1;
+
+  conf->duplex_mode = flexran_get_duplex_mode(mod_id, cc_id);
+  conf->has_duplex_mode = 1;
+
+  conf->subframe_assignment = flexran_get_subframe_assignment(mod_id,  cc_id);
+  conf->has_subframe_assignment = 1;
+
+  conf->special_subframe_patterns = flexran_get_special_subframe_assignment(mod_id, cc_id);
+  conf->has_special_subframe_patterns = 1;
+
+  //TODO: Fill in with actual value, The MBSFN radio frame period
+  conf->n_mbsfn_subframe_config_rfperiod = 0;
+  uint32_t *elem_rfperiod = malloc(sizeof(uint32_t) * conf->n_mbsfn_subframe_config_rfperiod);
+  if (elem_rfperiod)
+    for(int j = 0; j < conf->n_mbsfn_subframe_config_rfperiod; j++)
+      elem_rfperiod[j] = 1;
+  conf->mbsfn_subframe_config_rfperiod = elem_rfperiod;
+
+  //TODO: Fill in with actual value, The MBSFN radio frame offset
+  conf->n_mbsfn_subframe_config_rfoffset = 0;
+  uint32_t *elem_rfoffset = malloc(sizeof(uint32_t) * conf->n_mbsfn_subframe_config_rfoffset);
+  if (elem_rfoffset)
+    for(int j = 0; j < conf->n_mbsfn_subframe_config_rfoffset; j++)
+      elem_rfoffset[j] = 1;
+  conf->mbsfn_subframe_config_rfoffset = elem_rfoffset;
+
+  //TODO: Fill in with actual value, Bitmap indicating the MBSFN subframes
+  conf->n_mbsfn_subframe_config_sfalloc = 0;
+  uint32_t *elem_sfalloc = malloc(sizeof(uint32_t) * conf->n_mbsfn_subframe_config_sfalloc);
+  if (elem_sfalloc)
+    for(int j = 0; j < conf->n_mbsfn_subframe_config_sfalloc; j++)
+      elem_sfalloc[j] = 1;
+  conf->mbsfn_subframe_config_sfalloc = elem_sfalloc;
+
+  conf->prach_config_index = flexran_get_prach_ConfigIndex(mod_id, cc_id);
+  conf->has_prach_config_index = 1;
+
+  conf->prach_freq_offset = flexran_get_prach_FreqOffset(mod_id, cc_id);
+  conf->has_prach_freq_offset = 1;
+
+  conf->max_harq_msg3tx = flexran_get_maxHARQ_Msg3Tx(mod_id, cc_id);
+  conf->has_max_harq_msg3tx = 1;
+
+  conf->n1pucch_an = flexran_get_n1pucch_an(mod_id, cc_id);
+  conf->has_n1pucch_an = 1;
+
+  conf->deltapucch_shift = flexran_get_deltaPUCCH_Shift(mod_id, cc_id);
+  conf->has_deltapucch_shift = 1;
+
+  conf->nrb_cqi = flexran_get_nRB_CQI(mod_id, cc_id);
+  conf->has_nrb_cqi = 1;
+
+  conf->srs_subframe_config = flexran_get_srs_SubframeConfig(mod_id, cc_id);
+  conf->has_srs_subframe_config = 1;
+
+  conf->srs_bw_config = flexran_get_srs_BandwidthConfig(mod_id, cc_id);
+  conf->has_srs_bw_config = 1;
+
+  conf->srs_mac_up_pts = flexran_get_srs_MaxUpPts(mod_id, cc_id);
+  conf->has_srs_mac_up_pts = 1;
+
+  conf->dl_freq = flexran_agent_get_operating_dl_freq (mod_id, cc_id);
+  conf->has_dl_freq = 1;
+
+  conf->ul_freq = flexran_agent_get_operating_ul_freq (mod_id,  cc_id);
+  conf->has_ul_freq = 1;
+
+  conf->eutra_band = flexran_agent_get_operating_eutra_band (mod_id, cc_id);
+  conf->has_eutra_band = 1;
+
+  conf->dl_pdsch_power = flexran_agent_get_operating_pdsch_refpower(mod_id,  cc_id);
+  conf->has_dl_pdsch_power = 1;
+
+  conf->enable_64qam = flexran_get_enable64QAM(mod_id, cc_id);
+  conf->has_enable_64qam = 1;
+}
+
+int flexran_agent_register_phy_xface(mid_t mod_id) {
   if (agent_phy_xface[mod_id]) {
     LOG_E(PHY, "PHY agent for eNB %d is already registered\n", mod_id);
     return -1;
   }
+
   AGENT_PHY_xface *xface = malloc(sizeof(AGENT_PHY_xface));
+
   if (!xface) {
     LOG_E(FLEXRAN_AGENT, "could not allocate memory for PHY agent xface %d\n", mod_id);
     return -1;
diff --git a/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h b/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h
index 26a658a9431942b82328500701230ff1af26dfce..25b3deac35fbb9b27f3f143c700bb7f4a8148e10 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h
+++ b/openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h
@@ -45,6 +45,10 @@
  * FlexRAN agent - technology PHY API
  **********************************/
 
+/* Fill the PHY part of an cell_config message */
+void flexran_agent_fill_phy_cell_config(mid_t mod_id, uint8_t cc_id,
+    Protocol__FlexCellConfig *conf);
+
 /* Register technology specific interface callbacks */
 int flexran_agent_register_phy_xface(mid_t mod_id);
 
diff --git a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
index c485410b35a48949242450fe1baf51a939dc7d35..2e6f330275282874ad3fb26f74e92788a7be7202 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
@@ -27,7 +27,7 @@
  */
 
 #include "flexran_agent_rrc.h"
-
+#include "flexran_agent_ran_api.h"
 
 #include "liblfds700.h"
 
@@ -662,6 +662,59 @@ int flexran_agent_register_rrc_xface(mid_t mod_id)
   return 0;
 }
 
+void flexran_agent_fill_rrc_cell_config(mid_t mod_id, uint8_t cc_id,
+    Protocol__FlexCellConfig *conf) {
+  conf->cell_id = cc_id;
+  conf->has_cell_id = 1;
+
+  if (!conf->si_config) {
+    conf->si_config = malloc(sizeof(Protocol__FlexSiConfig));
+    if (conf->si_config)
+      protocol__flex_si_config__init(conf->si_config);
+  }
+
+  if (conf->si_config) {
+    // TODO THIS IS DU RRC
+    conf->si_config->sib1_length = flexran_get_sib1_length(mod_id, cc_id);
+    conf->si_config->has_sib1_length = 1;
+
+    conf->si_config->si_window_length = (uint32_t) flexran_get_si_window_length(mod_id,  cc_id);
+    conf->si_config->has_si_window_length = 1;
+
+    conf->si_config->n_si_message = 0;
+
+    /* Protocol__FlexSiMessage **si_message; */
+    /* si_message = malloc(sizeof(Protocol__FlexSiMessage *) * si_config->n_si_message); */
+    /* if(si_message == NULL) */
+    /* 	goto error; */
+    /* for(j = 0; j < si_config->n_si_message; j++){ */
+    /* 	si_message[j] = malloc(sizeof(Protocol__FlexSiMessage)); */
+    /* 	if(si_message[j] == NULL) */
+    /* 	  goto error; */
+    /* 	protocol__flex_si_message__init(si_message[j]); */
+    /* 	//TODO: Fill in with actual value, Periodicity of SI msg in radio frames */
+    /* 	si_message[j]->periodicity = 1;				//SIPeriod */
+    /* 	si_message[j]->has_periodicity = 1; */
+    /* 	//TODO: Fill in with actual value, rhe length of the SI message in bytes */
+    /* 	si_message[j]->length = 10; */
+    /* 	si_message[j]->has_length = 1; */
+    /* } */
+    /* if(si_config->n_si_message > 0){ */
+    /* 	si_config->si_message = si_message; */
+    /* } */
+  }
+
+  conf->ra_response_window_size = flexran_get_ra_ResponseWindowSize(mod_id, cc_id);
+  conf->has_ra_response_window_size = 1;
+
+  // belongs to MAC but is read in RRC
+  conf->mac_contention_resolution_timer = flexran_get_mac_ContentionResolutionTimer(mod_id, cc_id);
+  conf->has_mac_contention_resolution_timer = 1;
+
+  conf->ul_pusch_power = flexran_agent_get_operating_pusch_p0 (mod_id, cc_id);
+  conf->has_ul_pusch_power = 1;
+}
+
 int flexran_agent_unregister_rrc_xface(mid_t mod_id)
 {
   if (!agent_rrc_xface[mod_id]) {
diff --git a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
index d1a0c8f4235f88124f3e84363c838509683a8151..a9b2ac49ccbb7c0137fbab3ca0e6dc34ea446ba2 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
+++ b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
@@ -60,6 +60,10 @@ void flexran_trigger_rrc_measurements (mid_t mod_id, MeasResults_t *);
 int flexran_agent_rrc_stats_reply(mid_t mod_id, const report_config_t *report_config, Protocol__FlexUeStatsReport **ue_report, Protocol__FlexCellStatsReport **cell_report);
 int flexran_agent_rrc_destroy_stats_reply(Protocol__FlexranMessage *msg);
 
+/* Fill the RRC part of an cell_config message */
+void flexran_agent_fill_rrc_cell_config(mid_t mod_id, uint8_t cc_id,
+    Protocol__FlexCellConfig *conf);
+
 /*Register technology specific interface callbacks*/
 int flexran_agent_register_rrc_xface(mid_t mod_id);
 
diff --git a/openair2/ENB_APP/flexran_agent_common.c b/openair2/ENB_APP/flexran_agent_common.c
index 53137855d36341ac4d0e74f2ec4e2f200e351846..592af05f2e8ba85ba7789751bbe55edc1c529923 100644
--- a/openair2/ENB_APP/flexran_agent_common.c
+++ b/openair2/ENB_APP/flexran_agent_common.c
@@ -35,6 +35,9 @@
 #include "flexran_agent_extern.h"
 #include "flexran_agent_net_comm.h"
 #include "flexran_agent_ran_api.h"
+#include "flexran_agent_phy.h"
+#include "flexran_agent_mac.h"
+#include "flexran_agent_rrc.h"
 //#include "PHY/extern.h"
 #include "common/utils/LOG/log.h"
 
@@ -807,8 +810,6 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
   Protocol__FlexEnbConfigRequest *enb_config_req_msg = input->enb_config_request_msg;
   xid = (enb_config_req_msg->header)->xid;
   
-  int i, j;
-  
   Protocol__FlexEnbConfigReply *enb_config_reply_msg;
   enb_config_reply_msg = malloc(sizeof(Protocol__FlexEnbConfigReply));
   if(enb_config_reply_msg == NULL)
@@ -827,178 +828,16 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
     cell_conf = malloc(sizeof(Protocol__FlexCellConfig *) * enb_config_reply_msg->n_cell_config);
     if(cell_conf == NULL)
       goto error;
-    for(i = 0; i < enb_config_reply_msg->n_cell_config; i++){
+    for(int i = 0; i < enb_config_reply_msg->n_cell_config; i++){
       cell_conf[i] = malloc(sizeof(Protocol__FlexCellConfig));
+      if (!cell_conf[i]) goto error;
       protocol__flex_cell_config__init(cell_conf[i]);
-
-      cell_conf[i]->phy_cell_id = 1;
-      cell_conf[i]->has_phy_cell_id = flexran_get_cell_id(mod_id,i);
-
-      cell_conf[i]->cell_id = i;
-      cell_conf[i]->has_cell_id = 1;
-
-      cell_conf[i]->pusch_hopping_offset = flexran_get_hopping_offset(mod_id,i);
-      cell_conf[i]->has_pusch_hopping_offset = 1;
-
-      cell_conf[i]->hopping_mode = flexran_get_hopping_mode(mod_id,i);
-      cell_conf[i]->has_hopping_mode = 1;
-
-      cell_conf[i]->n_sb = flexran_get_n_SB(mod_id,i);
-      cell_conf[i]->has_n_sb = 1;
-
-      cell_conf[i]->phich_resource = flexran_get_phich_resource(mod_id,i);
-      cell_conf[i]->has_phich_resource = 1;
-
-      cell_conf[i]->phich_duration = flexran_get_phich_duration(mod_id,i);
-      cell_conf[i]->has_phich_duration = 1;
-
-      cell_conf[i]->init_nr_pdcch_ofdm_sym = flexran_get_num_pdcch_symb(mod_id,i);
-      cell_conf[i]->has_init_nr_pdcch_ofdm_sym = 1;
-      Protocol__FlexSiConfig *si_config;
-      si_config = malloc(sizeof(Protocol__FlexSiConfig));
-      if(si_config == NULL)
-        goto error;
-      protocol__flex_si_config__init(si_config);
-
-      si_config->sfn = flexran_get_current_system_frame_num(mod_id);
-      si_config->has_sfn = 1;
-
-      si_config->sib1_length = flexran_get_sib1_length(mod_id,i);
-      si_config->has_sib1_length = 1;
-
-      si_config->si_window_length = (uint32_t) flexran_get_si_window_length(mod_id, i);
-      si_config->has_si_window_length = 1;
-
-      si_config->n_si_message = 0;
-
-      /* Protocol__FlexSiMessage **si_message; */
-      /* si_message = malloc(sizeof(Protocol__FlexSiMessage *) * si_config->n_si_message); */
-      /* if(si_message == NULL) */
-      /* 	goto error; */
-      /* for(j = 0; j < si_config->n_si_message; j++){ */
-      /* 	si_message[j] = malloc(sizeof(Protocol__FlexSiMessage)); */
-      /* 	if(si_message[j] == NULL) */
-      /* 	  goto error; */
-      /* 	protocol__flex_si_message__init(si_message[j]); */
-      /* 	//TODO: Fill in with actual value, Periodicity of SI msg in radio frames */
-      /* 	si_message[j]->periodicity = 1;				//SIPeriod */
-      /* 	si_message[j]->has_periodicity = 1; */
-      /* 	//TODO: Fill in with actual value, rhe length of the SI message in bytes */
-      /* 	si_message[j]->length = 10; */
-      /* 	si_message[j]->has_length = 1; */
-      /* } */
-      /* if(si_config->n_si_message > 0){ */
-      /* 	si_config->si_message = si_message; */
-      /* } */
-
-      cell_conf[i]->si_config = si_config;
-
-      cell_conf[i]->dl_bandwidth = flexran_get_N_RB_DL(mod_id,i);
-      cell_conf[i]->has_dl_bandwidth = 1;
-
-      cell_conf[i]->ul_bandwidth = flexran_get_N_RB_UL(mod_id,i);
-      cell_conf[i]->has_ul_bandwidth = 1;
-
-      cell_conf[i]->ul_cyclic_prefix_length = flexran_get_ul_cyclic_prefix_length(mod_id, i);
-      cell_conf[i]->has_ul_cyclic_prefix_length = 1;
-
-      cell_conf[i]->dl_cyclic_prefix_length = flexran_get_dl_cyclic_prefix_length(mod_id,i);
-      cell_conf[i]->has_dl_cyclic_prefix_length = 1;
-
-      cell_conf[i]->antenna_ports_count = flexran_get_antenna_ports(mod_id, i);
-      cell_conf[i]->has_antenna_ports_count = 1;
-
-      cell_conf[i]->duplex_mode = flexran_get_duplex_mode(mod_id,i);
-      cell_conf[i]->has_duplex_mode = 1;
-
-      cell_conf[i]->subframe_assignment = flexran_get_subframe_assignment(mod_id, i);
-      cell_conf[i]->has_subframe_assignment = 1;
-      cell_conf[i]->special_subframe_patterns = flexran_get_special_subframe_assignment(mod_id,i);
-      cell_conf[i]->has_special_subframe_patterns = 1;
-      //TODO: Fill in with actual value, The MBSFN radio frame period
-      cell_conf[i]->n_mbsfn_subframe_config_rfperiod = 0;
-      uint32_t *elem_rfperiod;
-      elem_rfperiod = (uint32_t *) malloc(sizeof(uint32_t) *cell_conf[i]->n_mbsfn_subframe_config_rfperiod);
-      if(elem_rfperiod == NULL)
-	goto error;
-      for(j = 0; j < cell_conf[i]->n_mbsfn_subframe_config_rfperiod; j++){
-	elem_rfperiod[j] = 1;
-      }
-      cell_conf[i]->mbsfn_subframe_config_rfperiod = elem_rfperiod;
-
-      //TODO: Fill in with actual value, The MBSFN radio frame offset
-      cell_conf[i]->n_mbsfn_subframe_config_rfoffset = 0;
-      uint32_t *elem_rfoffset;
-      elem_rfoffset = (uint32_t *) malloc(sizeof(uint32_t) *cell_conf[i]->n_mbsfn_subframe_config_rfoffset);
-      if(elem_rfoffset == NULL)
-	goto error;
-      for(j = 0; j < cell_conf[i]->n_mbsfn_subframe_config_rfoffset; j++){
-	elem_rfoffset[j] = 1;
-      }
-      cell_conf[i]->mbsfn_subframe_config_rfoffset = elem_rfoffset;
-
-      //TODO: Fill in with actual value, Bitmap indicating the MBSFN subframes
-      cell_conf[i]->n_mbsfn_subframe_config_sfalloc = 0;
-      uint32_t *elem_sfalloc;
-      elem_sfalloc = (uint32_t *) malloc(sizeof(uint32_t) *cell_conf[i]->n_mbsfn_subframe_config_sfalloc);
-      if(elem_sfalloc == NULL)
-	goto error;
-      for(j = 0; j < cell_conf[i]->n_mbsfn_subframe_config_sfalloc; j++){
-	elem_sfalloc[j] = 1;
-      }
-      cell_conf[i]->mbsfn_subframe_config_sfalloc = elem_sfalloc;
-
-      cell_conf[i]->prach_config_index = flexran_get_prach_ConfigIndex(mod_id,i);
-      cell_conf[i]->has_prach_config_index = 1;
-
-      cell_conf[i]->prach_freq_offset = flexran_get_prach_FreqOffset(mod_id,i);
-      cell_conf[i]->has_prach_freq_offset = 1;
-
-      cell_conf[i]->ra_response_window_size = flexran_get_ra_ResponseWindowSize(mod_id,i);
-      cell_conf[i]->has_ra_response_window_size = 1;
-
-      cell_conf[i]->mac_contention_resolution_timer = flexran_get_mac_ContentionResolutionTimer(mod_id,i);
-      cell_conf[i]->has_mac_contention_resolution_timer = 1;
-
-      cell_conf[i]->max_harq_msg3tx = flexran_get_maxHARQ_Msg3Tx(mod_id,i);
-      cell_conf[i]->has_max_harq_msg3tx = 1;
-
-      cell_conf[i]->n1pucch_an = flexran_get_n1pucch_an(mod_id,i);
-      cell_conf[i]->has_n1pucch_an = 1;
-
-      cell_conf[i]->deltapucch_shift = flexran_get_deltaPUCCH_Shift(mod_id,i);
-      cell_conf[i]->has_deltapucch_shift = 1;
-
-      cell_conf[i]->nrb_cqi = flexran_get_nRB_CQI(mod_id,i);
-      cell_conf[i]->has_nrb_cqi = 1;
-
-      cell_conf[i]->srs_subframe_config = flexran_get_srs_SubframeConfig(mod_id,i);
-      cell_conf[i]->has_srs_subframe_config = 1;
-
-      cell_conf[i]->srs_bw_config = flexran_get_srs_BandwidthConfig(mod_id,i);
-      cell_conf[i]->has_srs_bw_config = 1;
-
-      cell_conf[i]->srs_mac_up_pts = flexran_get_srs_MaxUpPts(mod_id,i);
-      cell_conf[i]->has_srs_mac_up_pts = 1;
-
-      cell_conf[i]->dl_freq = flexran_agent_get_operating_dl_freq (mod_id,i);
-      cell_conf[i]->has_dl_freq = 1;
-
-      cell_conf[i]->ul_freq = flexran_agent_get_operating_ul_freq (mod_id, i);
-      cell_conf[i]->has_ul_freq = 1;
-
-      cell_conf[i]->eutra_band = flexran_agent_get_operating_eutra_band (mod_id,i);
-      cell_conf[i]->has_eutra_band = 1;
-
-      cell_conf[i]->dl_pdsch_power = flexran_agent_get_operating_pdsch_refpower(mod_id, i);
-      cell_conf[i]->has_dl_pdsch_power = 1;
-
-      cell_conf[i]->ul_pusch_power = flexran_agent_get_operating_pusch_p0 (mod_id,i);
-      cell_conf[i]->has_ul_pusch_power = 1;
-
-      cell_conf[i]->enable_64qam = flexran_get_enable64QAM(mod_id,i);
-      cell_conf[i]->has_enable_64qam = 1;
-
+      if (flexran_agent_get_phy_xface(mod_id))
+        flexran_agent_fill_phy_cell_config(mod_id, i, cell_conf[i]);
+      if (flexran_agent_get_rrc_xface(mod_id))
+        flexran_agent_fill_rrc_cell_config(mod_id, i, cell_conf[i]);
+      if (flexran_agent_get_mac_xface(mod_id))
+        flexran_agent_fill_mac_cell_config(mod_id, i, cell_conf[i]);
       cell_conf[i]->carrier_index = i;
       cell_conf[i]->has_carrier_index = 1;
     }