diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index dbc129f3f7514ae257d1c053ee264f1a6d6f466b..53623c04e0c437284065301a67a430f46ce22809 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -2143,7 +2143,7 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr
     )
   target_link_libraries (${myExe}
 
-    -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY PHY_UE LFDS ${ITTI_LIB} LFDS7 -Wl,--end-group
+    -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY PHY_UE PHY_RU LFDS ${ITTI_LIB} LFDS7 -Wl,--end-group
     pthread m rt ${CONFIG_LIBRARIES} ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${T_LIB} dl
     )
 endforeach(myExe)
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
index 9c8e3eff3a707dec86319d289e61147d2df94e4f..a541c223934e00d2d3cf31eaf01d10a748b3dd3a 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
@@ -42,6 +42,7 @@
 
 
 #ifndef TEST_DEBUG
+#include "PHY/impl_defs_top.h"
 #include "PHY/defs_common.h"
 #include "PHY/CODING/coding_defs.h"
 #include "PHY/CODING/lte_interleaver_inline.h"
diff --git a/openair1/PHY/INIT/lte_init_ue.c b/openair1/PHY/INIT/lte_init_ue.c
index 11260274db909dd29c380a41899733414955297a..46fce73314e0300e4011b0799e8852a4e4570c86 100644
--- a/openair1/PHY/INIT/lte_init_ue.c
+++ b/openair1/PHY/INIT/lte_init_ue.c
@@ -32,6 +32,7 @@
 #include <math.h>
 #include "PHY/LTE_TRANSPORT/transport_common_proto.h"
 #include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 uint8_t dmrs1_tab_ue[8] = {0,2,3,4,6,8,9,10};
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
index 3e1311734f1ec2cfe7841a3d9853d5a450682e70..8810752398f1991361c2826519d70075bf645a30 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
@@ -24,7 +24,7 @@
 #include "PHY/phy_extern_ue.h"
 
 #include "UTIL/LOG/vcd_signal_dumper.h"
-#include "lte_estimation.h"
+#include "openair2/LAYER2/MAC/mac_proto.h"
 
 #define DEBUG_PHY
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
index 327d07b730384c5471dcf31bfe973be4f3849d62..06ef4a5d1a16fd68083c4f03b973ed5a215ef079 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
@@ -23,6 +23,7 @@
 #include "PHY/defs_UE.h"
 #include "PHY/LTE_ESTIMATION/lte_estimation.h"
 #include "PHY/impl_defs_top.h"
+#include "openair2/LAYER2/MAC/mac_proto.h"
 
 #include "UTIL/LOG/vcd_signal_dumper.h"
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
index fe3084cdb2f3f627911cdfa010f8de4785b3b3eb..8d1fb20d6b79b828130666254a629c9cd255b355 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
@@ -21,6 +21,9 @@
 
 #include <string.h>
 #include "PHY/defs_UE.h"
+#include "lte_estimation.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
+
 #include "filt16_32.h"
 //#define DEBUG_BF_CH
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
index 15dbcd6ed7c02c7a22afb76e7fbf62cf0131e257..a72563f7e6d58754111b3657ea50ec7fa7230576 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
@@ -24,6 +24,9 @@
 #include "filt96_32.h"
 #include "T.h"
 //#define DEBUG_CH
+#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
+#include "SCHED_UE/sched_UE.h"
 
 int lte_dl_channel_estimation(PHY_VARS_UE *ue,
                               uint8_t eNB_id,
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
index 585ed871fa3f2e466e901b94d976b57e4cbb9315..c4fc80a8c11635868e1a7d97590ff048553500ef 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
@@ -21,6 +21,8 @@
 
 #include <string.h>
 #include "PHY/defs_UE.h"
+#include "lte_estimation.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 //#define DEBUG_CH
 int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
diff --git a/openair1/PHY/LTE_TRANSPORT/pucch.c b/openair1/PHY/LTE_TRANSPORT/pucch.c
index c46aba4d81c6b1fc6c573061938356ef6be6db7e..39703eebfd3a35ab05ce9c880b90272fa0fc3a9b 100644
--- a/openair1/PHY/LTE_TRANSPORT/pucch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pucch.c
@@ -32,6 +32,7 @@
 #include "PHY/defs_eNB.h"
 #include "PHY/phy_extern.h" 
 #include "LAYER2/MAC/mac.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 #include "UTIL/LOG/log.h"
 #include "UTIL/LOG/vcd_signal_dumper.h"
diff --git a/openair1/PHY/LTE_TRANSPORT/rar_tools.c b/openair1/PHY/LTE_TRANSPORT/rar_tools.c
index f8bb01fd9bfb0c4282c926d6a548ba7bf7a6b845..ab4656716bcc509cfddf46ba96582c81adcc89fd 100644
--- a/openair1/PHY/LTE_TRANSPORT/rar_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/rar_tools.c
@@ -34,7 +34,7 @@
 #include "SCHED/sched_eNB.h"
 #include "LAYER2/MAC/mac.h"
 #include "UTIL/LOG/vcd_signal_dumper.h"
-
+#include "PHY/LTE_TRANSPORT/transport_proto.h"
 #include "assertions.h"
 
 extern uint16_t RIV2nb_rb_LUT6[32];
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
index 277ca90a2efd7b82d71b62166d5540590e6d2efb..b1d5b9b70e3b50dc3ca03ddbbdeddaff6d629b1e 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
@@ -33,12 +33,17 @@
 #include "PHY/defs_UE.h"
 #include "PHY/phy_extern_ue.h"
 #include "SCHED_UE/sched_UE.h"
-#include "transport_ue.h"
-
+#include "transport_proto_ue.h"
+#include "PHY/MODULATION/modulation_UE.h"
+#include "PHY/LTE_ESTIMATION/lte_estimation.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
+#include "openair2/LAYER2/MAC/mac_proto.h"
 #include "common_lib.h"
+#include "PHY/INIT/phy_init.h"
+
 extern openair0_config_t openair0_cfg[];
 
-#define DEBUG_INITIAL_SYNCH
+//#define DEBUG_INITIAL_SYNCH
 
 int pbch_detection(PHY_VARS_UE *ue, runmode_t mode)
 {
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c
index 5f2ad6cf796b4fe48c5bafc4ae2542cfaf8da637..a6acec9ca3762499a8c7fbed3032f253c3f1a7cf 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c
@@ -36,6 +36,7 @@
 #include "transport_ue.h"
 #include "PHY/phy_extern_ue.h"
 #include "PHY/sse_intrin.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 //#define DEBUG_PBCH 1
 //#define DEBUG_PBCH_ENCODING
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/pcfich_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/pcfich_ue.c
index cd63f0483b1d149c221be9f46183dab3c9f1a111..82bb0a2659ed9ff4e4ea8a09fc4d068f2c516092 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/pcfich_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/pcfich_ue.c
@@ -30,6 +30,7 @@
 * \warning
 */
 #include "PHY/defs_UE.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 //#define DEBUG_PCFICH
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/phich_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/phich_ue.c
index 22d10319603ed585d7d9722a78dc3649ff1f4232..669e0937c6c57bc559d4e2f87c546fd550419ac5 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/phich_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/phich_ue.c
@@ -34,7 +34,8 @@
 #include "PHY/phy_extern_ue.h"
 #include "SCHED_UE/sched_UE.h"
 #include "transport_ue.h"
-
+#include "transport_proto_ue.h"
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 #include "LAYER2/MAC/mac.h"
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c
index 1efa09ff9d845e844289edd921f9cbe162a518aa..d944491b6399ead88d0c3d163f22c2e300787376 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c
@@ -22,7 +22,7 @@
 #include "PHY/defs_UE.h"
 #include "PHY/phy_extern_ue.h"
 #include "PHY/sse_intrin.h"
-#include "PHY/LTE_TRANSPORT/transport_common.h"
+#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
 
 // Mask for identifying subframe for MBMS
 #define MBSFN_TDD_SF3 0x80// for TDD
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/pucch_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/pucch_ue.c
index a762bb047b7e431e1255a9e9b1eb1bf4c813b7a7..c3bbd0fb1caafe229a22a5660e7991385f663515 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/pucch_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/pucch_ue.c
@@ -31,6 +31,7 @@
 */
 #include "PHY/defs_UE.h"
 #include "PHY/phy_extern_ue.h" 
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 #include "UTIL/LOG/log.h"
 #include "UTIL/LOG/vcd_signal_dumper.h"
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
index 2bbbf95b760d1c2b6e07fbe41e29a0f4cd5c539a..03df4e7f690e86b00cd8d39e3d58a9ddf1db267c 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
@@ -34,6 +34,7 @@
 #include "SCHED_UE/sched_UE.h"
 #include "LAYER2/MAC/mac.h"
 #include "UTIL/LOG/vcd_signal_dumper.h"
+#include "transport_proto_ue.h"
 
 #include "assertions.h"
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h b/openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h
index 574905b5b0698662dd3a4e692ae091253c00c300..e97353a902868b1417240dfc2bc97e168db4e883 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h
+++ b/openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h
@@ -36,6 +36,7 @@
 #include "../LTE_TRANSPORT/dci.h"
 #include "../LTE_TRANSPORT/mdci.h"
 #include "../LTE_TRANSPORT/uci_common.h"
+#include "../LTE_TRANSPORT/transport_common.h"
 #ifndef STANDALONE_COMPILE
 #include "UTIL/LISTS/list.h"
 #endif
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
index a9a6c006356c5ea85d60e9b1be4c826457ac0830..d913a6f77902bb33f657be1a5ea45cf64ba3b801 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
@@ -32,7 +32,7 @@
 
 #include "PHY/defs_UE.h"
 #include "PHY/phy_extern_ue.h"
-
+#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
 #include "PHY/CODING/coding_defs.h"
 #include "PHY/CODING/coding_extern.h"
 #include "PHY/CODING/lte_interleaver_inline.h"
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
index adf89031dc3ea216f80ee55c1b5c9443dcc8ec8e..92a8d16b44ad59045d890b4ad0e39634f3cfeb8f 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
@@ -34,9 +34,10 @@
 #include "PHY/CODING/coding_defs.h"
 #include "PHY/CODING/coding_extern.h"
 #include "PHY/LTE_UE_TRANSPORT/transport_ue.h"
+#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
 #include "PHY/LTE_TRANSPORT/transport_eNB.h"
 #include "UTIL/LOG/vcd_signal_dumper.h"
-
+#include "PHY/LTE_REFSIG/lte_refsig.h"
 
 
 //#define DEBUG_ULSCH_MODULATION
diff --git a/openair1/PHY/MODULATION/slot_fep.c b/openair1/PHY/MODULATION/slot_fep.c
index a5fcaabf8fd2d52ce42c9f9ee685c3ff5778ff65..b01979431dcf88212604aa71cf0d0470eb177d06 100644
--- a/openair1/PHY/MODULATION/slot_fep.c
+++ b/openair1/PHY/MODULATION/slot_fep.c
@@ -21,6 +21,8 @@
 
 #include "PHY/defs_UE.h"
 #include "modulation_UE.h"
+#include "PHY/LTE_ESTIMATION/lte_estimation.h"
+
 //#define DEBUG_FEP
 
 #define SOFFSET 0
diff --git a/openair1/PHY/MODULATION/slot_fep_mbsfn.c b/openair1/PHY/MODULATION/slot_fep_mbsfn.c
index 7a8fd3f03f19611af06b42c4ccbef89d1d002e42..272cbc5d60b0566562fb9d838c54f3396ac37b7e 100644
--- a/openair1/PHY/MODULATION/slot_fep_mbsfn.c
+++ b/openair1/PHY/MODULATION/slot_fep_mbsfn.c
@@ -21,6 +21,8 @@
 
 #include "PHY/defs_UE.h"
 #include "modulation_UE.h"
+#include "PHY/LTE_ESTIMATION/lte_estimation.h"
+
 //#define DEBUG_FEP
 
 #define SOFFSET 0
diff --git a/openair1/PHY/TOOLS/lte_phy_scope.c b/openair1/PHY/TOOLS/lte_phy_scope.c
index 34799bff7a4e670773382a70c72438766ae94b65..9f2ec54744941e783e0cb27cabeb19b93c95e4d5 100644
--- a/openair1/PHY/TOOLS/lte_phy_scope.c
+++ b/openair1/PHY/TOOLS/lte_phy_scope.c
@@ -24,6 +24,7 @@
 #include <stdlib.h>
 #include "lte_phy_scope.h"
 #include "PHY/defs_common.h"
+#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
 
 #define TPUT_WINDOW_LENGTH 100
 int otg_enabled;
diff --git a/openair1/SCHED_UE/sched_UE.h b/openair1/SCHED_UE/sched_UE.h
index 43d863b062f2d4f7fc1d7d3f8c09517dc790ab67..244d6789d24b523801a61be02f9e218d19c90630 100644
--- a/openair1/SCHED_UE/sched_UE.h
+++ b/openair1/SCHED_UE/sched_UE.h
@@ -25,10 +25,11 @@
   \email knopp@eurecom.fr
 */
 
-#ifndef __openair_SCHED_ENB_H__
-#define __openair_SCHED_ENB_H__
+#ifndef __openair_SCHED_UE_H__
+#define __openair_SCHED_UE_H__
 
 #include "PHY/defs_UE.h"
+#include "../SCHED/sched_common.h"
 
 /*! \brief Scheduling for UE TX procedures in normal subframes.
   @param phy_vars_ue Pointer to UE variables on which to act
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index 3780600a4211fc94638981720227fbe7e5adc7d9..77b8c0e674d3b09cad69be0fcb6048abc7f54f46 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -64,6 +64,11 @@
 #include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
 #include "SCHED/sched_eNB.h"
 #include "SCHED_UE/sched_UE.h"
+#include "common/config/config_load_configmodule.h"
+#include "PHY/INIT/phy_init.h"
+
+void feptx_ofdm(RU_t *ru);
+void feptx_prec(RU_t *ru);
 
 double cpuf;
 
@@ -547,7 +552,6 @@ int main(int argc, char **argv)
   DCI_ALLOC_t da;
   DCI_ALLOC_t *dci_alloc = &da;
 
-  unsigned int ret;
   unsigned int coded_bits_per_codeword=0,nsymb; //,tbs=0;
 
   unsigned int tx_lev=0,tx_lev_dB=0,trials;
@@ -570,16 +574,6 @@ int main(int argc, char **argv)
   unsigned char input_trch_file=0;
   FILE *input_fd=NULL;
   unsigned char input_file=0;
-  //  char input_val_str[50],input_val_str2[50];
-
-  char input_trch_val[16];
-
-  //  unsigned char pbch_pdu[6];
-
-
-
-
-  //  FILE *rx_frame_file;
 
   int n_frames;
   int n_ch_rlz = 1;
@@ -602,7 +596,7 @@ int main(int argc, char **argv)
   // void *data;
   // int ii;
   //  int bler;
-  double blerr[4],uncoded_ber=0; //,avg_ber;
+  double blerr[4];
   short *uncoded_ber_bit=NULL;
   uint8_t N_RB_DL=25,osf=1;
   frame_t frame_type = FDD;
@@ -1607,7 +1601,7 @@ int main(int argc, char **argv)
 	      // this is for user 0 only
 	      printf("nb_rb %d, rb_alloc %x, mcs %d\n",
 		     eNB->dlsch[0][0]->harq_processes[0]->nb_rb,
-		     eNB->dlsch[0][0]->harq_processes[0]->rb_alloc,
+		     eNB->dlsch[0][0]->harq_processes[0]->rb_alloc[0],
 		     eNB->dlsch[0][0]->harq_processes[0]->mcs);
 
 	      coded_bits_per_codeword = get_G(&eNB->frame_parms,
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 6590ea4dbc5b7a1082407dabd174ded8a747a7f6..22cac3719374c4dcd86a2e71eefc17151dc97d2f 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -49,12 +49,14 @@
 
 #include "PHY/LTE_TRANSPORT/transport_proto.h"
 #include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
+#include "PHY/INIT/phy_init.h"
 
 #include "unitary_defs.h"
 
 #include "PHY/TOOLS/lte_phy_scope.h"
 #include "dummy_functions.c"
 
+#include "common/config/config_load_configmodule.h"
 double cpuf;