diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c
index 127a11d322b7a9e240ccb3214b9d8bc301a773f8..6cf72d8eed1925da1166b0d276660cc917046a27 100755
--- a/openair1/PHY/INIT/lte_init.c
+++ b/openair1/PHY/INIT/lte_init.c
@@ -34,7 +34,8 @@
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "assertions.h"
 #include <math.h>
-
+//NB-IoT
+#include "openair2/ENB_APP/NB_IoT_config.c"
 extern uint32_t from_earfcn(int eutra_bandP,uint32_t dl_earfcn);
 extern int32_t get_uldl_offset(int eutra_bandP);
 
@@ -96,7 +97,7 @@ l1_north_init_NB_IoT()
     LOG_I(PHY,"RC.L1_NB_IoT = %p\n",RC.L1_NB_IoT);
 
     for (j=0; j<NbIoT_L1_ParamList.numelt; j++) {
-      AssertFatal(RC.L1_NB_IoT[j]!=NULL,"RC.eNB_NB_IoT[%d] is null\n",i);
+      AssertFatal(RC.L1_NB_IoT[j]!=NULL,"RC.eNB_NB_IoT[%d] is null\n",j);
       LOG_I(PHY,"RC.L1_NB_IoT = %p\n",RC.L1_NB_IoT);
 
 
diff --git a/openair1/PHY/INIT/lte_init_NB_IoT.c b/openair1/PHY/INIT/lte_init_NB_IoT.c
index cffba8de29dfe18add125d3e033175a5415fe80b..34bdf9cde4119570279888fd08cc155e46369f5f 100644
--- a/openair1/PHY/INIT/lte_init_NB_IoT.c
+++ b/openair1/PHY/INIT/lte_init_NB_IoT.c
@@ -428,41 +428,43 @@ void phy_config_dedicated_eNB_NB_IoT(uint8_t 			Mod_id,
 	
 }
 
-// void phy_init_lte_top_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms)
-// {
+void phy_init_lte_top_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms)
+{
 
-// //   crcTableInit();
+  crcTableInit_NB_IoT();
 
-// //   ccodedot11_init();
-// //   ccodedot11_init_inv();
+  //ccodedot11_init();
+  //ccodedot11_init_inv();
+  ccodelte_init_NB_IoT();
+  ccodelte_init2_NB_IoT();
+  //ccodelte_init_inv();
 
-// //   ccodelte_init();
-// //   ccodelte_init_inv();
+  //treillis_table_init();
 
-// //   treillis_table_init();
+  //phy_generate_viterbi_tables();
+  //phy_generate_viterbi_tables_lte();
 
-// //   phy_generate_viterbi_tables();
-// //   phy_generate_viterbi_tables_lte();
+  //init_td8();
+ // init_td16();
+#ifdef __AVX2__
+ // init_td16avx2();
+#endif
 
-// //   init_td8();
-// //   init_td16();
-// // #ifdef __AVX2__
-// //   init_td16avx2();
-// // #endif
+  //lte_sync_time_init_NB_IoT(frame_parms);
 
-// //   lte_sync_time_init(frame_parms);
+  //generate_ul_ref_sigs();
+  //generate_ul_ref_sigs_rx();
+  generate_ul_ref_sigs_rx_NB_IoT();
 
-// //   generate_ul_ref_sigs();
-//   generate_ul_ref_sigs_rx_NB_IoT();
+ // generate_64qam_table();
+  //generate_16qam_table();
+ // generate_RIV_tables();
 
-//   // generate_64qam_table();
-//   // generate_16qam_table();
-//   // generate_RIV_tables();
+ init_unscrambling_lut_NB_IoT();
+ // init_scrambling_lut();
 
-//   // init_unscrambling_lut();
-//   // init_scrambling_lut();
-//   // //set_taus_seed(1328);
+  //set_taus_seed(1328);
 
-// }
+}
 
 
diff --git a/openair1/PHY/INIT/phy_init.h b/openair1/PHY/INIT/phy_init.h
index bdf4ef7f4365456ca3b8f06d4fb713d033e90e6c..bde918ee934ddc749abb033f9c6d899750ea5da7 100644
--- a/openair1/PHY/INIT/phy_init.h
+++ b/openair1/PHY/INIT/phy_init.h
@@ -24,8 +24,8 @@
 
 #include "PHY/defs_eNB.h"
 #include "PHY/defs_UE.h"
-
-
+#include "PHY/defs_NB_IoT.h"
+#include "PHY/impl_defs_lte_NB_IoT.h"
 #include "LTE_SystemInformationBlockType2.h"
 //#include "RadioResourceConfigCommonSIB.h"
 #include "LTE_RadioResourceConfigDedicated.h"
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index c8f20a4ac77ad8ff429918d1c037846396da8660..d9774cc66b099628b84ab41dc92ec57ba1489faf 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -484,15 +484,15 @@ void *te_thread(void *param) {
       return(NULL);
     }
 
-    /*if(opp_enabled == 1 && te_wakeup_stats0->p_time>50*3000){
+    if(opp_enabled == 1 && te_wakeup_stats0->p_time>50*3000){
       print_meas_now(te_wakeup_stats0,"coding_wakeup",stderr);
       printf("te_thread0 delay for waking up in frame_rx: %d  subframe_rx: %d \n",proc->frame_rx,proc->subframe_rx);
-    }*/
+    }
   }
 
   return(NULL);
 }
-
+*/
 
 
 int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
diff --git a/openair1/PHY/LTE_TRANSPORT/pbch.c b/openair1/PHY/LTE_TRANSPORT/pbch.c
index 9bd256ee0bc22e7ee1d8be1c36cdab60ac323fa8..c09014eb3b17c5d3872c163070fbf4d3e6bcd780 100644
--- a/openair1/PHY/LTE_TRANSPORT/pbch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pbch.c
@@ -47,9 +47,6 @@
 //#define DEBUG_PBCH_ENCODING
 //#define INTERFERENCE_MITIGATION 1
 
-
-#include "PHY/LTE_REFSIG/defs.h"
-
 #define PBCH_A 24
 
 int allocate_pbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h b/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
index a1459e78050f307201f3eba028062d3c03f3e73f..471b2df4e0609d2b7e788ff0bbeabcdc248f1d7f 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
+++ b/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
@@ -35,6 +35,7 @@
 #include "PHY/LTE_TRANSPORT/transport_common_proto.h"
 #include <math.h>
 #include "nfapi_interface.h"
+#include "PHY/defs_NB_IoT.h"
 
 // Functions below implement 36-211 and 36-212
 
@@ -43,25 +44,6 @@
  */
 
 
-/** \fn free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch,unsigned char N_RB_DL)
-    \brief This function frees memory allocated for a particular DLSCH at eNB
-    @param dlsch Pointer to DLSCH to be removed
-*/
-void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch);
-
-void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
-
-/** \fn new_eNB_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t abstraction_flag, LTE_DL_FRAME_PARMS* frame_parms)
-    \brief This function allocates structures for a particular DLSCH at eNB
-    @returns Pointer to DLSCH to be removed
-    @param Kmimo Kmimo factor from 36-212/36-213
-    @param Mdlharq Maximum number of HARQ rounds (36-212/36-213)
-    @param Nsoft Soft-LLR buffer size from UE-Category
-    @params N_RB_DL total number of resource blocks (determine the operating BW)
-    @param abstraction_flag Flag to indicate abstracted interface
-    @param frame_parms Pointer to frame descriptor structure
-*/
-LTE_eNB_DLSCH_t *new_eNB_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t N_RB_DL, uint8_t abstraction_flag, LTE_DL_FRAME_PARMS* frame_parms);
 
 
 
@@ -90,40 +72,7 @@ void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch);
 LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char N_RB_UL, uint8_t abstraction_flag);
 
 
-/** \fn dlsch_encoding(PHY_VARS_eNB *eNB,
-    uint8_t *input_buffer,
-    LTE_DL_FRAME_PARMS *frame_parms,
-    uint8_t num_pdcch_symbols,
-    LTE_eNB_DLSCH_t *dlsch,
-    int frame,
-    uint8_t subframe)
-    \brief This function performs a subset of the bit-coding functions for LTE as described in 36-212, Release 8.Support is limited to turbo-coded channels (DLSCH/ULSCH). The implemented functions are:
-    - CRC computation and addition
-    - Code block segmentation and sub-block CRC addition
-    - Channel coding (Turbo coding)
-    - Rate matching (sub-block interleaving, bit collection, selection and transmission
-    - Code block concatenation
-    @param eNB Pointer to eNB PHY context
-    @param input_buffer Pointer to input buffer for sub-frame
-    @param frame_parms Pointer to frame descriptor structure
-    @param num_pdcch_symbols Number of PDCCH symbols in this subframe
-    @param dlsch Pointer to dlsch to be encoded
-    @param frame Frame number
-    @param subframe Subframe number
-    @param rm_stats Time statistics for rate-matching
-    @param te_stats Time statistics for turbo-encoding
-    @param i_stats Time statistics for interleaving
-    @returns status
-*/
-int32_t dlsch_encoding(PHY_VARS_eNB *eNB,
-                       uint8_t *a,
-                       uint8_t num_pdcch_symbols,
-                       LTE_eNB_DLSCH_t *dlsch,
-                       int frame,
-                       uint8_t subframe,
-                       time_stats_t *rm_stats,
-                       time_stats_t *te_stats,
-                       time_stats_t *i_stats);
+
 
 int32_t dlsch_encoding_SIC(PHY_VARS_UE *ue,
                            uint8_t *a,
@@ -137,194 +86,11 @@ int32_t dlsch_encoding_SIC(PHY_VARS_UE *ue,
 
 
 
-/** \fn dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
-    uint8_t *input_buffer,
-    uint8_t num_pdcch_symbols,
-    LTE_eNB_DLSCH_t *dlsch,
-    int frame,
-    uint8_t subframe)
-    \brief This function performs a subset of the bit-coding functions for LTE as described in 36-212, Release 8.Support is limited to turbo-coded channels (DLSCH/ULSCH). This version spawns 1 worker thread. The implemented functions are:
-    - CRC computation and addition
-    - Code block segmentation and sub-block CRC addition
-    - Channel coding (Turbo coding)
-    - Rate matching (sub-block interleaving, bit collection, selection and transmission
-    - Code block concatenation
-    @param eNB Pointer to eNB PHY context
-    @param input_buffer Pointer to input buffer for sub-frame
-    @param num_pdcch_symbols Number of PDCCH symbols in this subframe
-    @param dlsch Pointer to dlsch to be encoded
-    @param frame Frame number
-    @param subframe Subframe number
-    @param rm_stats Time statistics for rate-matching
-    @param te_stats Time statistics for turbo-encoding
-    @param i_stats Time statistics for interleaving
-    @returns status
-*/
-int32_t dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
-                                uint8_t *a,
-                                uint8_t num_pdcch_symbols,
-                                LTE_eNB_DLSCH_t *dlsch,
-                                int frame,
-                                uint8_t subframe,
-                                time_stats_t *rm_stats,
-                                time_stats_t *te_stats,
-                                time_stats_t *i_stats);
 
 void dlsch_encoding_emul(PHY_VARS_eNB *phy_vars_eNB,
                          uint8_t *DLSCH_pdu,
                          LTE_eNB_DLSCH_t *dlsch);
 
-
-// Functions below implement 36-211
-
-/** \fn allocate_REs_in_RB(int32_t **txdataF,
-    uint32_t *jj,
-    uint32_t *jj2,
-    uint16_t re_offset,
-    uint32_t symbol_offset,
-    LTE_DL_eNB_HARQ_t *dlsch0_harq,
-    LTE_DL_eNB_HARQ_t *dlsch1_harq,
-    uint8_t pilots,
-    int16_t amp,
-    int16_t *qam_table_s,
-    uint32_t *re_allocated,
-    uint8_t skip_dc,
-    uint8_t skip_half,
-    uint8_t use2ndpilots,
-    LTE_DL_FRAME_PARMS *frame_parms);
-
-    \brief Fills RB with data
-    \param txdataF pointer to output data (frequency domain signal)
-    \param jj index to output (from CW 1)
-    \param jj2 index to output (from CW 2)
-    \param re_offset index of the first RE of the RB
-    \param symbol_offset index to the OFDM symbol
-    \param dlsch0_harq Pointer to Transport block 0 HARQ structure
-    \param dlsch0_harq Pointer to Transport block 1 HARQ structure
-    \param pilots =1 if symbol_offset is an OFDM symbol that contains pilots, 0 otherwise
-    \param amp Amplitude for symbols
-    \param qam_table_s0 pointer to scaled QAM table for Transport Block 0 (by rho_a or rho_b)
-    \param qam_table_s1 pointer to scaled QAM table for Transport Block 1 (by rho_a or rho_b)
-    \param re_allocated pointer to allocation counter
-    \param skip_dc offset for positive RBs
-    \param skip_half indicate that first or second half of RB must be skipped for PBCH/PSS/SSS
-    \param ue_spec_rs UE specific RS indicator
-    \param nb_antennas_tx_phy Physical antenna elements which can be different with antenna port number, especially in beamforming case
-    \param use2ndpilots Set to use the pilots from antenna port 1 for PDSCH
-    \param frame_parms Frame parameter descriptor
-*/
-
-// Functions below implement 36-211
-
-/** \fn allocate_REs_in_RB(int32_t **txdataF,
-    uint32_t *jj,
-    uint32_t *jj2,
-    uint16_t re_offset,
-    uint32_t symbol_offset,
-    LTE_DL_eNB_HARQ_t *dlsch0_harq,
-    LTE_DL_eNB_HARQ_t *dlsch1_harq,
-    uint8_t pilots,
-    int16_t amp,
-    int16_t *qam_table_s,
-    uint32_t *re_allocated,
-    uint8_t skip_dc,
-    uint8_t skip_half,
-    uint8_t use2ndpilots,
-    LTE_DL_FRAME_PARMS *frame_parms);
-
-    \brief Fills RB with data
-    \param txdataF pointer to output data (frequency domain signal)
-    \param jj index to output (from CW 1)
-    \param jj index to output (from CW 2)
-    \param re_offset index of the first RE of the RB
-    \param symbol_offset index to the OFDM symbol
-    \param dlsch0_harq Pointer to Transport block 0 HARQ structure
-    \param dlsch0_harq Pointer to Transport block 1 HARQ structure
-    \param pilots =1 if symbol_offset is an OFDM symbol that contains pilots, 0 otherwise
-    \param amp Amplitude for symbols
-    \param qam_table_s0 pointer to scaled QAM table for Transport Block 0 (by rho_a or rho_b)
-    \param qam_table_s1 pointer to scaled QAM table for Transport Block 1 (by rho_a or rho_b)
-    \param re_allocated pointer to allocation counter
-    \param skip_dc offset for positive RBs
-    \param skip_half indicate that first or second half of RB must be skipped for PBCH/PSS/SSS
-    \param use2ndpilots Set to use the pilots from antenna port 1 for PDSCH
-    \param frame_parms Frame parameter descriptor
-*/
-
-int32_t allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
-                           int32_t **txdataF,
-                           uint32_t *jj,
-                           uint32_t *jj2,
-                           uint16_t re_offset,
-                           uint32_t symbol_offset,
-                           LTE_DL_eNB_HARQ_t *dlsch0_harq,
-                           LTE_DL_eNB_HARQ_t *dlsch1_harq,
-                           uint8_t pilots,
-                           int16_t amp,
-                           uint8_t precoder_index,
-                           int16_t *qam_table_s0,
-                           int16_t *qam_table_s1,
-                           uint32_t *re_allocated,
-                           uint8_t skip_dc,
-                           uint8_t skip_half,
-                           uint8_t lprime,
-                           uint8_t mprime,
-                           uint8_t Ns,
-                           int *P1_SHIFT,
-                           int *P2_SHIFT);
-
-/** \fn int32_t dlsch_modulation(int32_t **txdataF,
-    int16_t amp,
-    uint32_t sub_frame_offset,
-    LTE_DL_FRAME_PARMS *frame_parms,
-    uint8_t num_pdcch_symbols,
-    LTE_eNB_DLSCH_t *dlsch);
-
-    \brief This function is the top-level routine for generation of the sub-frame signal (frequency-domain) for DLSCH.
-    @param txdataF Table of pointers for frequency-domain TX signals
-    @param amp Amplitude of signal
-    @param sub_frame_offset Offset of this subframe in units of subframes (usually 0)
-    @param frame_parms Pointer to frame descriptor
-    @param num_pdcch_symbols Number of PDCCH symbols in this subframe
-    @param dlsch0 Pointer to Transport Block 0 DLSCH descriptor for this allocation
-    @param dlsch1 Pointer to Transport Block 0 DLSCH descriptor for this allocation
-*/
-int32_t dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
-                         int32_t **txdataF,
-                         int16_t amp,
-                         uint32_t sub_frame_offset,
-                         uint8_t num_pdcch_symbols,
-                         LTE_eNB_DLSCH_t *dlsch0,
-                         LTE_eNB_DLSCH_t *dlsch1);
-
-int32_t dlsch_modulation_SIC(int32_t **sic_buffer,
-                             uint32_t sub_frame_offset,
-                             LTE_DL_FRAME_PARMS *frame_parms,
-                             uint8_t num_pdcch_symbols,
-                             LTE_eNB_DLSCH_t *dlsch0,
-                             int G);
-/*
-  \brief This function is the top-level routine for generation of the sub-frame signal (frequency-domain) for MCH.
-  @param txdataF Table of pointers for frequency-domain TX signals
-  @param amp Amplitude of signal
-  @param subframe_offset Offset of this subframe in units of subframes (usually 0)
-  @param frame_parms Pointer to frame descriptor
-  @param dlsch Pointer to DLSCH descriptor for this allocation
-*/
-int mch_modulation(int32_t **txdataF,
-                   int16_t amp,
-                   uint32_t subframe_offset,
-                   LTE_DL_FRAME_PARMS *frame_parms,
-                   LTE_eNB_DLSCH_t *dlsch);
-
-/** \brief Top-level generation function for eNB TX of MBSFN
-    @param phy_vars_eNB Pointer to eNB variables
-    @param a Pointer to transport block
-    @param abstraction_flag
-
-*/
-void generate_mch(PHY_VARS_eNB *phy_vars_eNB,eNB_rxtx_proc_t *proc,uint8_t *a);
-
 /** \brief This function generates the frequency-domain pilots (cell-specific downlink reference signals)
     @param phy_vars_eNB Pointer to eNB variables
     @param proc Pointer to RXn-TXnp4 proc information
@@ -400,7 +166,7 @@ int32_t generate_pilots_slot(PHY_VARS_eNB *phy_vars_eNB,
                              int first_pilot_only);
 
 int32_t generate_mbsfn_pilot(PHY_VARS_eNB *phy_vars_eNB,
-                             eNB_rxtx_proc_t *proc,
+                             eNB_rxtx_proc_NB_IoT_t *proc,
                              int32_t **txdataF,
                              int16_t amp);
 
diff --git a/openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/dci_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/dci_NB_IoT.h
diff --git a/openair1/PHY/LTE_TRANSPORT/defs_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/defs_NB_IoT.h
similarity index 99%
rename from openair1/PHY/LTE_TRANSPORT/defs_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/defs_NB_IoT.h
index cf23c70f8850d545f18baad35b8c2bf8585a52aa..ed34aa53f3de5480dc4d53f467ac56667871d413 100644
--- a/openair1/PHY/LTE_TRANSPORT/defs_NB_IoT.h
+++ b/openair1/PHY/NBIoT_TRANSPORT/defs_NB_IoT.h
@@ -15,11 +15,11 @@
 #define __LTE_TRANSPORT_DEFS_NB_IOT__H__
 ////#include "PHY/defs.h"
 //#include "PHY/defs_nb_iot.h"
-#include "PHY/LTE_TRANSPORT/dci_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/dci_NB_IoT.h"
 #include "PHY/impl_defs_lte_NB_IoT.h"
 #include "openair2/COMMON/platform_types.h"
 //#include "dci.h"
-#include "PHY/LTE_TRANSPORT/uci_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/uci_NB_IoT.h"
 //#include "dci.h"
 //#include "uci.h"
 //#ifndef STANDALONE_COMPILE
diff --git a/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c
index 44bfae3cf5d18b2aae380d13e43e50fb9a527b90..00047e7e9cca5efd24798654210181c7c88e605d 100644
--- a/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c
+++ b/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c
@@ -32,13 +32,14 @@
 #include <string.h>
 //#include "PHY/impl_defs_lte.h"
 //#include "openair2/COMMON/openair_defs.h"
-#include "PHY/defs.h"
+#include "PHY/defs_eNB.h"
+#include "PHY/defs_UE.h"
 //#include "PHY/extern_NB_IoT.h"
 #include "PHY/CODING/defs_NB_IoT.h"
 //#include "PHY/CODING/extern.h"
 //#include "PHY/CODING/lte_interleaver_inline.h"
-#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
-#include "PHY/LTE_TRANSPORT/proto.h"
+#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h"
+#include "PHY/LTE_TRANSPORT/transport_proto.h"
 //#include "SCHED/defs_NB_IoT.h"
 //#include "defs_nb_iot.h"
 //#include "UTIL/LOG/vcd_signal_dumper.h"
diff --git a/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c
index 484b84e9ef8d351d3752488c5dfadd41edc27357..98a5c3097c40916f4d21ce48186fac1e69ad8b28 100644
--- a/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c
+++ b/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c
@@ -28,9 +28,10 @@
 * \warning
 */
 
-#include "PHY/defs.h"
+#include "PHY/defs_eNB.h"
+#include "PHY/defs_UE.h"
 ///////////////#include "PHY/defs_nb_iot.h"
-#include "PHY/extern.h"
+#include "PHY/phy_extern.h"
 #include <math.h>
 //#include "PHY/impl_defs_lte_NB_IoT.h"
 //#include "PHY/impl_defs_top_NB_IoT.h"
diff --git a/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c
index d4f0ece9fd3b530e5a294f9ceaa9bce15676fd7e..53e5dddb85727dfa37a26e1e7b68159f975fc1bb 100644
--- a/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c
+++ b/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c
@@ -30,11 +30,12 @@
 */
 
 //#include <math.h>
-#include "PHY/defs.h"
+#include "PHY/defs_eNB.h"
+#include "PHY/defs_UE.h"
 //#include "PHY/defs_NB_IoT.h" // not can be replaced by impl_defs_lte_NB_IoT & impl_defs_top_NB_IoT if "msg" function is not used
 //#include "defs.h"
 //#include "PHY/extern_NB_IoT.h"
-#include "PHY/extern.h"
+#include "PHY/phy_extern.h"
 //#include "PHY/impl_defs_lte_NB_IoT.h"
 //#include "PHY/impl_defs_top_NB_IoT.h"
 #include "nsss_NB_IoT.h"
diff --git a/openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.h
diff --git a/openair1/PHY/LTE_TRANSPORT/nsss_gen_NB_IoT.m b/openair1/PHY/NBIoT_TRANSPORT/nsss_gen_NB_IoT.m
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/nsss_gen_NB_IoT.m
rename to openair1/PHY/NBIoT_TRANSPORT/nsss_gen_NB_IoT.m
diff --git a/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c
index c1972b2295deee572559dfceca70e15f26a60820..e477260c4300606b966a6d6c77e91efa264d5fbe 100644
--- a/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c
+++ b/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c
@@ -12,7 +12,8 @@
 * \warning
 */
 
-#include "PHY/defs.h"
+#include "PHY/defs_eNB.h"
+#include "PHY/defs_UE.h"
 #include "PHY/defs_NB_IoT.h"
 #include "PHY/LTE_REFSIG/defs_NB_IoT.h"
 
diff --git a/openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/proto_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/proto_NB_IoT.h
diff --git a/openair1/PHY/LTE_TRANSPORT/sc_rotation_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/sc_rotation_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/sc_rotation_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/sc_rotation_NB_IoT.h
diff --git a/openair1/PHY/LTE_TRANSPORT/tables_nprach_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/tables_nprach_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/tables_nprach_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/tables_nprach_NB_IoT.h
diff --git a/openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/uci_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/uci_NB_IoT.h
diff --git a/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c
index 839f2d722bf2ed9d7c0ada437e3244b2a3d5f498..137b0877d3fbaf29d6f68a0766c04634135bf9c7 100644
--- a/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c
+++ b/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c
@@ -1506,7 +1506,7 @@ void descrambling_NPUSCH_ack_NB_IoT(LTE_DL_FRAME_PARMS  *fp,
 //////////////////////////////////////////////////////////////////////////////////////////
 uint32_t  turbo_decoding_NB_IoT(PHY_VARS_eNB           *eNB,
                                 NB_IoT_eNB_NULSCH_t    *ulsch_NB_IoT,
-                                eNB_rxtx_proc_t        *proc,
+                                eNB_rxtx_proc_NB_IoT_NB_IoT_t *proc,
                                 uint8_t                 npusch_format,
                                 unsigned int            G,
                                 uint8_t                 rvdx,
@@ -1687,7 +1687,7 @@ void deinterleaving_NPUSCH_data_NB_IoT(NB_IoT_UL_eNB_HARQ_t *ulsch_harq, int16_t
 
 void decode_NPUSCH_msg_NB_IoT(PHY_VARS_eNB        *eNB,
                               LTE_DL_FRAME_PARMS  *fp,
-                              eNB_rxtx_proc_t     *proc,
+                              eNB_rxtx_proc_NB_IoT_t     *proc,
                               uint8_t             npusch_format,
                               uint16_t            N_SF_per_word,
                               uint16_t            Nsc_RU,
@@ -1852,7 +1852,7 @@ void decode_NPUSCH_msg_NB_IoT(PHY_VARS_eNB        *eNB,
 
 
 uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB            *eNB,
-                            eNB_rxtx_proc_t         *proc,
+                            eNB_rxtx_proc_NB_IoT_t         *proc,
                             uint8_t                 eNB_id,                    // this is the effective sector id
                             uint8_t                 UE_id,
                             uint16_t                UL_RB_ID_NB_IoT,           // 22 , to be included in // to be replaced by NB_IoT_start ??     
diff --git a/openair1/PHY/LTE_TRANSPORT/vars_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/vars_NB_IoT.h
similarity index 100%
rename from openair1/PHY/LTE_TRANSPORT/vars_NB_IoT.h
rename to openair1/PHY/NBIoT_TRANSPORT/vars_NB_IoT.h
diff --git a/openair1/PHY/defs_L1_NB_IoT.h b/openair1/PHY/defs_L1_NB_IoT.h
index 1c40314fd4d2ab127cc93da73942982e12a9f87c..a47854cb2e5ae799ac557acc5bb5b840c9bc841a 100644
--- a/openair1/PHY/defs_L1_NB_IoT.h
+++ b/openair1/PHY/defs_L1_NB_IoT.h
@@ -137,7 +137,7 @@ static inline void* malloc16_clear( size_t size )
 ////////////////////////////////////////////////////////////////////#ifdef OPENAIR_LTE    (check if this is required)
 
 //#include "PHY/LTE_TRANSPORT/defs.h"
-#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h"
 #include <pthread.h>
 
 #include "targets/ARCH/COMMON/common_lib.h"
@@ -1033,5 +1033,5 @@ typedef struct {
 
 #include "PHY/INIT/defs_NB_IoT.h"
 #include "PHY/LTE_REFSIG/defs_NB_IoT.h"
-#include "PHY/LTE_TRANSPORT/proto_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/proto_NB_IoT.h"
 #endif //  __PHY_DEFS__H__
diff --git a/openair1/PHY/defs_NB_IoT.h b/openair1/PHY/defs_NB_IoT.h
index 0e4cbbe70585ecf33655bc00e44b5795fe159f34..1ce5099d1d6fee88bbda03e94e1f61e19fbc4063 100644
--- a/openair1/PHY/defs_NB_IoT.h
+++ b/openair1/PHY/defs_NB_IoT.h
@@ -135,7 +135,7 @@ static inline void* malloc16_clear( size_t size )
 ////////////////////////////////////////////////////////////////////#ifdef OPENAIR_LTE    (check if this is required)
 
 //#include "PHY/LTE_TRANSPORT/defs.h"
-#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h"
 #include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h"
 
 #include <pthread.h>
@@ -286,6 +286,21 @@ typedef struct {
   pthread_mutex_t       mutex_l2;
   int                   instance_cnt_l2;
   pthread_attr_t        attr_l2;
+  uint32_t              frame_msg5;
+  uint32_t              subframe_msg5;
+  int                   subframe_real;
+  uint8_t               flag_scrambling;
+  uint8_t               flag_msg3;
+  uint8_t               counter_msg3;
+  uint32_t              frame_msg3;
+  uint8_t               flag_msg4;
+  uint8_t               counter_msg4;
+  uint32_t              frame_msg4;
+  uint32_t              subframe_msg4;
+  uint8_t               counter_msg5;
+  uint8_t               flag_msg5;
+  uint32_t              frame_dscr_msg5;
+  uint32_t              subframe_dscr_msg5;
 
 } eNB_rxtx_proc_NB_IoT_t;
 /*
@@ -1108,7 +1123,7 @@ static inline int release_thread(pthread_mutex_t *mutex,int *instance_cnt,char *
 #include "PHY/LTE_REFSIG/defs_NB_IoT.h"
 //#include "PHY/MODULATION/defs.h"
 //#include "PHY/LTE_TRANSPORT/proto.h"
-#include "PHY/LTE_TRANSPORT/proto_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/proto_NB_IoT.h"
 //#include "PHY/LTE_ESTIMATION/defs.h"
 //#include "SIMULATION/ETH_TRANSPORT/defs.h"
 //#endif
diff --git a/openair1/PHY/defs_common.h b/openair1/PHY/defs_common.h
index 253c3e0c96426935bd67d4cb855d01c43d7693bb..c038ee07a2782b7a75187cb10bb5654d796aa806 100644
--- a/openair1/PHY/defs_common.h
+++ b/openair1/PHY/defs_common.h
@@ -136,6 +136,56 @@ typedef enum {
   two=12
 } PHICH_RESOURCE_t;
 #endif
+
+////////////////////////////////////////// NB-IoT testing ///////////////////////////////////////////////////////////////
+typedef struct{
+  /// The base sequence of DMRS sequence in a cell for 3 tones transmission; see TS 36.211 [21, 10.1.4.1.2]. If absent, it is given by NB-IoT CellID mod 12. Value 12 is not used.
+  uint16_t threeTone_BaseSequence;
+  /// Define 3 cyclic shifts for the 3-tone case, see TS 36.211 [21, 10.1.4.1.2].
+  uint16_t threeTone_CyclicShift;
+  /// The base sequence of DMRS sequence in a cell for 6 tones transmission; see TS 36.211 [21, 10.1.4.1.2]. If absent, it is given by NB-IoT CellID mod 14. Value 14 is not used.
+  uint16_t sixTone_BaseSequence;
+  /// Define 4 cyclic shifts for the 6-tone case, see TS 36.211 [21, 10.1.4.1.2].
+  uint16_t sixTone_CyclicShift;
+  /// The base sequence of DMRS sequence in a cell for 12 tones transmission; see TS 36.211 [21, 10.1.4.1.2]. If absent, it is given by NB-IoT CellID mod 30. Value 30 is not used.
+  uint16_t twelveTone_BaseSequence;
+
+}DMRS_CONFIGx_t;
+
+/// UL-ReferenceSignalsNPUSCH from 36.331 RRC spec
+typedef struct {
+  /// Parameter: Group-hopping-enabled, see TS 36.211 (5.5.1.3). \vr{[0..1]}
+  uint8_t groupHoppingEnabled;
+  /// , see TS 36.211 (5.5.1.3). \vr{[0..29]}
+  uint8_t groupAssignmentNPUSCH;
+  /// Parameter: cyclicShift, see TS 36.211 (Table 5.5.2.1.1-2). \vr{[0..7]}
+  uint8_t cyclicShift;
+  /// nPRS for cyclic shift of DRS \note not part of offical UL-ReferenceSignalsPUSCH ASN1 specification.
+  uint8_t nPRS[20];
+  /// group hopping sequence for DMRS, 36.211, Section 10.1.4.1.3. Second index corresponds to the four possible subcarrier configurations
+  uint8_t grouphop[20][4];
+  /// sequence hopping sequence for DRS \note not part of offical UL-ReferenceSignalsPUSCH ASN1 specification.
+  uint8_t seqhop[20];
+} UL_REFERENCE_SIGNALS_NPUSCHx_t;
+
+
+/// PUSCH-ConfigCommon from 36.331 RRC spec.
+typedef struct {
+  /// Number of repetitions for ACK/NACK HARQ response to NPDSCH containing Msg4 per NPRACH resource, see TS 36.213 [23, 16.4.2].
+  uint8_t ack_NACK_NumRepetitions_Msg4[3];
+  /// SRS SubframeConfiguration. See TS 36.211 [21, table 5.5.3.3-1]. Value sc0 corresponds to value 0, sc1 to value 1 and so on.
+  uint8_t srs_SubframeConfig;
+  /// Parameter: \f$N^{HO}_{RB}\f$, see TS 36.211 (5.3.4). \vr{[0..98]}
+  DMRS_CONFIGx_t dmrs_Config;
+  /// Ref signals configuration
+  UL_REFERENCE_SIGNALS_NPUSCHx_t ul_ReferenceSignalsNPUSCH;
+
+} NPUSCH_CONFIG_COMMONx;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
 /// PHICH-Config from 36.331 RRC spec
 typedef struct {
   /// Parameter: PHICH-Duration, see TS 36.211 (Table 6.9.3-1).
@@ -722,6 +772,19 @@ typedef struct {
 #endif
   /// for fair RR scheduler
   uint32_t ue_multiple_max;
+    ////////////////////////// NB-IoT testing //////////////////////////////
+  uint8_t subcarrier_spacing;
+
+  uint16_t control_region_size;
+
+  uint8_t nb_antennas_tx_NB_IoT; // to replace with NB_IoT_frame_params
+
+  NPUSCH_CONFIG_COMMONx npusch_config_common;
+
+  uint8_t RB_ID_NB_IoT;   // to be used
+
+  uint8_t flag_free_sf;  // flag to indicate for NPDSCH and NPDCCH process if the current SF already used
+  ///////////////////////////////////////////////////////////////////// 
 } LTE_DL_FRAME_PARMS;
 
 typedef enum {
diff --git a/openair1/SCHED/phy_procedures_lte_common.c b/openair1/SCHED/phy_procedures_lte_common.c
index bd9d51ee44c9991b46521539b28a480e08691c1c..f030356df293b595fd1565674b115e69dbd50c23 100644
--- a/openair1/SCHED/phy_procedures_lte_common.c
+++ b/openair1/SCHED/phy_procedures_lte_common.c
@@ -31,6 +31,7 @@
 */
 #include "PHY/defs_eNB.h"
 #include "PHY/defs_UE.h"
+#include "PHY/phy_extern.h"
 #include "SCHED/sched_common_extern.h"
 #include "PHY/LTE_TRANSPORT/transport_common_proto.h"
 
@@ -907,7 +908,7 @@ unsigned int is_phich_subframe(LTE_DL_FRAME_PARMS *frame_parms,unsigned char sub
 
 
 
-
+/*
 LTE_eNB_UE_stats* get_UE_stats(uint8_t Mod_id, uint8_t  CC_id,uint16_t rnti)
 {
   int8_t UE_id;
@@ -940,7 +941,7 @@ int8_t find_ue(uint16_t rnti, PHY_VARS_eNB *eNB)
   }
   return(-1);
 }
-
+*/
 
 
 LTE_DL_FRAME_PARMS* get_lte_frame_parms(module_id_t Mod_id, uint8_t  CC_id)
@@ -949,7 +950,7 @@ LTE_DL_FRAME_PARMS* get_lte_frame_parms(module_id_t Mod_id, uint8_t  CC_id)
   return(&RC.eNB[Mod_id][CC_id]->frame_parms);
 
 }
-
+/*
 MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t  CC_id, rnti_t rnti)
 {
   int8_t UE_id = find_ue( rnti, RC.eNB[Mod_id][CC_id] );
@@ -959,7 +960,7 @@ MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t  CC_id, rnti_t rnti)
 
   return &RC.eNB[Mod_id][CC_id]->mu_mimo_mode[UE_id];
 }
-
+*/
 
 int is_srs_occasion_common(LTE_DL_FRAME_PARMS *frame_parms,int frame_tx,int subframe_tx)
 {
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 166c02073cfc95c710531dd97801db3bf8fac7dc..ba60dac5307b61c5ff2e53f79693b8e7f899b8f8 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -2003,5 +2003,5 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 0 );
 }
-#endif
+
 
diff --git a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c
index cc0bc47c12ac960c8b77f35443a76cf48b65b3d2..f245bd31bf85fd0fa28fa9b8de6b735b9b3d484d 100644
--- a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c
+++ b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c
@@ -50,7 +50,7 @@ int Irep_to_Nrep_x[16] = {1,2,4,8,16,32,64,128,192,256,384,512,768,1024,1536,204
 
 
 void handle_nfapi_dlsch_pdu_NB_IoT(PHY_VARS_eNB *eNB,
-						  		   eNB_rxtx_proc_t *proc,
+						  		   eNB_rxtx_proc_NB_IoT_t *proc,
 		       	   	   	           nfapi_dl_config_request_pdu_t *dl_config_pdu,
 						   		   uint8_t *sdu)
 {
@@ -282,7 +282,7 @@ void schedule_response_NB_IoT(Sched_Rsp_NB_IoT_t *Sched_INFO)
   //LOG_I(PHY,"schedule_response_NB_IoT\n");
   //XXX check if correct to take eNB like this
   PHY_VARS_eNB 		*eNB     = PHY_vars_eNB_g[0][Sched_INFO->CC_id];
-  eNB_rxtx_proc_t 	*proc 	 = &eNB->proc.proc_rxtx[0];
+  eNB_rxtx_proc_NB_IoT_t 	*proc 	 = &eNB->proc.proc_rxtx[0];
   NB_IoT_eNB_NPBCH_t 		*npbch;
   ///
   int 						i;
diff --git a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h
index 63c3eb1fcf61717c0e411076d9d665cdbcb1b96e..53b83b2ce97274e663008548ac5a8c59a554f69d 100644
--- a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h
+++ b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h
@@ -14,7 +14,7 @@
 
 
 void handle_nfapi_dlsch_pdu_NB_IoT(PHY_VARS_eNB *eNB,
-						  		   eNB_rxtx_proc_t *proc,
+						  		   eNB_rxtx_proc_NB_IoT_t *proc,
 		       	   	   	           nfapi_dl_config_request_pdu_t *dl_config_pdu,
 						   		   uint8_t *sdu);
 
diff --git a/openair1/SCHED_NBIOT/defs_NB_IoT.h b/openair1/SCHED_NBIOT/defs_NB_IoT.h
index 1ed2a2a1acb8e6dff35ff419fcfa7a9509d5a6d0..d54c10debe59954069de2c1f9eff56a1bad3d965 100644
--- a/openair1/SCHED_NBIOT/defs_NB_IoT.h
+++ b/openair1/SCHED_NBIOT/defs_NB_IoT.h
@@ -19,22 +19,22 @@ enum openair_HARQ_TYPE_NB_IoT {
 
 void process_schedule_rsp_NB_IoT(Sched_Rsp_NB_IoT_t *sched_rsp,
                           		 PHY_VARS_eNB_NB_IoT *eNB,
-                          		 eNB_rxtx_proc_t *proc);
+                          		 eNB_rxtx_proc_NB_IoT_t *proc);
 
 /*Processing the ue-specific resources for uplink in NB-IoT*/
-void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc); // UL_IND_NB_IoT_t *UL_INFO);
+void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc); // UL_IND_NB_IoT_t *UL_INFO);
 
 /* For NB-IoT, we put NPBCH in later part, since it would be scheduled by MAC scheduler,this generates NRS/NPSS/NSSS*/
-void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc); 
+void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc); 
 
 /*Generate the ulsch params and do the mapping for the FAPI style parameters to OAI, and then do the packing*/
-void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu);
+void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu);
 
 /*Generate the dlsch params and do the mapping for the FAPI style parameters to OAI, and then do the packing*/
-void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu);
+void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu);
 
 /*Process all the scheduling result from MAC and also common signals.*/
-void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_t *proc,int do_meas);
+void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_NB_IoT_t *proc,int do_meas);
 
 int8_t find_ue_NB_IoT(uint16_t rnti, PHY_VARS_eNB *eNB);
 
@@ -50,10 +50,10 @@ uint32_t is_SIB1_NB_IoT(const frame_t          frameP,
 
 uint32_t rx_nprach_NB_IoT(PHY_VARS_eNB *eNB,int frame, uint8_t subframe, uint16_t *rnti, uint16_t *preamble_index, uint16_t *timing_advance);
 
-void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc);
+void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc);
 
 ////////////////// NB-IoT testing ////////////////////
-void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t data_or_control, uint8_t decode_flag);
+void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t data_or_control, uint8_t decode_flag);
 
 void fill_crc_indication_NB_IoT(PHY_VARS_eNB *eNB,int UE_id,int frame,int subframe,uint8_t decode_flag);
 
diff --git a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c
index 15bc05adebc8e971770bfa7710f289c20c4ca61e..d0e2dc1f4ad6d64bcb703fa6a89087405e48916e 100644
--- a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c
+++ b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c
@@ -213,7 +213,7 @@ uint32_t is_SIB1_NB_IoT(const frame_t          frameP,
 * It generates NRS/NPSS/NSSS
 *
 */
-void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) 
+void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) 
 {
   //LTE_DL_FRAME_PARMS   *fp       =  &eNB->frame_parms_NB_IoT;
   LTE_DL_FRAME_PARMS   *fp       =  &eNB->frame_parms;
@@ -401,7 +401,7 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
   
 }
 
-void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) //UL_IND_NB_IoT_t *UL_INFO)
+void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) //UL_IND_NB_IoT_t *UL_INFO)
 {
   //RX processing for ue-specific resources (i
   //NB_IoT_DL_FRAME_PARMS     *fp=&eNB->frame_parms_NB_IoT;
@@ -437,7 +437,7 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc
 }
 
 /////////////////////////////////////////////////////////// backup ////////////////////////////////////////////////////////
-/*void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_t *proc, UL_IND_NB_IoT_t *UL_INFO)
+/*void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_NB_IoT_t *proc, UL_IND_NB_IoT_t *UL_INFO)
 {
   //RX processing for ue-specific resources (i
   uint32_t                  ret=0,i,j,k;
@@ -762,7 +762,7 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc
 /////Generate eNB ndlsch params for NB-IoT from the NPDCCH PDU of the DCI, modify the input to the Sched Rsp variable////
 */
 
-void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu) 
+void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu) 
 {
   int                      UE_id         =  -1;
   LTE_DL_FRAME_PARMS    *fp           =  &eNB->frame_parms;
@@ -911,7 +911,7 @@ void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,n
 
 
 
-void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu) {
+void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu) {
 
   //int UE_id = -1;
   //int harq_pid = 0;
@@ -966,7 +966,7 @@ void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nf
  * ** redundancy version exist only in UL for NB-IoT and not in DL
  */
 void npdsch_procedures(PHY_VARS_eNB_NB_IoT      *eNB,
-                       eNB_rxtx_proc_t   *proc,     //Context data structure for RX/TX portion of subframe processing
+                       eNB_rxtx_proc_NB_IoT_t   *proc,     //Context data structure for RX/TX portion of subframe processing
                        NB_IoT_eNB_NDLSCH_t      *ndlsch,
                        //int num_pdcch_symbols,            //(BCOM says are not needed
                        uint8_t                  *pdu
@@ -1228,7 +1228,7 @@ extern int oai_exit;
  */
 
 void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT     *eNB,
-                                  eNB_rxtx_proc_t  *proc,
+                                  eNB_rxtx_proc_NB_IoT_t  *proc,
                                   int                     do_meas)
 {
   int                    frame           = proc->frame_tx;
@@ -1607,7 +1607,7 @@ void fill_crc_indication_NB_IoT(PHY_VARS_eNB *eNB,int UE_id,int frame,int subfra
   pthread_mutex_unlock(&eNB->UL_INFO_mutex);
 }
 
-void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t data_or_control, uint8_t decode_flag)
+void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t data_or_control, uint8_t decode_flag)
 {
       nfapi_rx_indication_pdu_t *pdu;
       nfapi_nb_harq_indication_pdu_t *ack_ind; // &eNB->UL_INFO.nb_harq_ind.nb_harq_indication_body.nb_harq_pdu_list[0] // nb_harq_indication_fdd_rel13->harq_tb1
@@ -1680,7 +1680,7 @@ void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t d
 
 
 
-void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
+void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc)
 {
   
   uint32_t i;
diff --git a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c
index be84cb2a9e71b1e43297e6ce8e6a228c239c19cf..14fd62ab0d90491d6285bd91c112f8fb7984a4b6 100755
--- a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c
+++ b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c
@@ -127,7 +127,7 @@ extern int rx_sig_fifo;
 #endif
 
 
-uint8_t is_SR_subframe(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t UE_id)
+uint8_t is_SR_subframe(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t UE_id)
 {
 
   const int subframe = proc->subframe_rx;
@@ -322,7 +322,7 @@ void phy_procedures_emos_eNB_TX(unsigned char subframe, PHY_VARS_eNB *eNB)
 }
 #endif
 
-void phy_procedures_eNB_S_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,relaying_type_t r_type)
+void phy_procedures_eNB_S_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,relaying_type_t r_type)
 {
   UNUSED(r_type);
   int subframe = proc->subframe_rx;
@@ -419,7 +419,7 @@ unsigned int taus(void);
 DCI_PDU DCI_pdu_tmp;
 
 
-void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,PHY_VARS_RN *rn,relaying_type_t r_type) {
+void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,PHY_VARS_RN *rn,relaying_type_t r_type) {
 
 
 #if defined(Rel10) || defined(Rel14)
@@ -506,7 +506,7 @@ int16_t buffer_npusch_ext[153600];
 //int32_t llr_msg5[16]; 
 //int32_t y_msg5[16];
 
-void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
+void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) {
 
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
   int **txdataF = eNB->common_vars.txdataF[0];
@@ -877,7 +877,7 @@ if(proc->flag_msg4 == 1 && proc->counter_msg4 > 0)
   /////////////////////////////////////////////////////////////////////////
 }
 
-void generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) {
+void generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) {
 
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
   int frame = proc->frame_tx;
@@ -1022,7 +1022,7 @@ void generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
   
 }
 
-void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) {
+void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) {
 
   int harq_pid;
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
@@ -1118,7 +1118,7 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
 }
 
 void pdsch_procedures(PHY_VARS_eNB *eNB,
-            eNB_rxtx_proc_t *proc,
+            eNB_rxtx_proc_NB_IoT_t *proc,
             LTE_eNB_DLSCH_t *dlsch,
             LTE_eNB_DLSCH_t *dlsch1,
             LTE_eNB_UE_stats *ue_stats,
@@ -1373,7 +1373,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
 }
 
 void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
-         eNB_rxtx_proc_t *proc,
+         eNB_rxtx_proc_NB_IoT_t *proc,
                            relaying_type_t r_type,
          PHY_VARS_RN *rn,
          int do_meas,
@@ -1748,7 +1748,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
   
 }
 
-void process_Msg3(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t UE_id, uint8_t harq_pid)
+void process_Msg3(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t UE_id, uint8_t harq_pid)
 {
   // this prepares the demodulation of the first PUSCH of a new user, containing Msg3
   int subframe = proc->subframe_rx;
@@ -1785,7 +1785,7 @@ void process_Msg3(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t UE_id, uint8_t
 
 void process_HARQ_feedback(uint8_t UE_id,
                            PHY_VARS_eNB *eNB,
-         eNB_rxtx_proc_t *proc,
+         eNB_rxtx_proc_NB_IoT_t *proc,
                            uint8_t pusch_flag,
                            uint8_t *pucch_payload,
                            uint8_t pucch_sel,
@@ -2058,7 +2058,7 @@ void process_HARQ_feedback(uint8_t UE_id,
 }
 
 void get_n1_pucch_eNB(PHY_VARS_eNB *eNB,
-          eNB_rxtx_proc_t *proc,
+          eNB_rxtx_proc_NB_IoT_t *proc,
                       uint8_t UE_id,
                       int16_t *n1_pucch0,
                       int16_t *n1_pucch1,
@@ -2409,7 +2409,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PRACH_RX,0);*/
 }
 
-void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq_pid,uint8_t do_srs)
+void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,int UE_id,int harq_pid,uint8_t do_srs)
 {
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
   uint8_t SR_payload = 0,*pucch_payload=NULL,pucch_payload0[2]= {0,0},pucch_payload1[2]= {0,0};
@@ -2750,7 +2750,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
 }
 
 
-void cba_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq_pid) {
+void cba_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,int UE_id,int harq_pid) {
 
   uint8_t access_mode;
   int num_active_cba_groups;
@@ -3013,7 +3013,7 @@ void init_te_thread(PHY_VARS_eNB *eNB,pthread_attr_t *attr_te) {
 }
 */
 
-void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) {
+void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc_rxtx) {
 
   eNB_proc_t *proc = &eNB->proc;
 
@@ -3059,7 +3059,7 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) {
 
 
 
-void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) {
+void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc_rxtx) {
 
   int l;
   LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
@@ -3099,7 +3099,7 @@ void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) {
   }    
 }
 
-void eNB_fep_rru_if5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) {
+void eNB_fep_rru_if5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc_rxtx) {
 
   eNB_proc_t *proc=&eNB->proc;
   uint8_t seqno=0;
@@ -3160,7 +3160,7 @@ if(frame%2==0 && subframe==9)
 
 }
 
-void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc){
+void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc){
 
 
   //  eNB_proc_t *proc       = &eNB->proc;
@@ -3193,7 +3193,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc){
 }
 
 /*
-void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t data_or_control, uint8_t msg3_flag)
+void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t data_or_control, uint8_t msg3_flag)
 {
       nfapi_rx_indication_pdu_t *pdu;
 
@@ -3235,7 +3235,7 @@ void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t d
 }
 */
 
-void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const relaying_type_t r_type)
+void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,const relaying_type_t r_type)
 {
   //RX processing for ue-specific resources (i
   UNUSED(r_type);
diff --git a/openair2/LAYER2/MAC/defs_NB_IoT.h b/openair2/LAYER2/MAC/defs_NB_IoT.h
index 0582a81ea1bc04265d263404bb17197dc29e3837..c5a0d4f1f5d3d3374f75a5a0a07861ede015e308 100644
--- a/openair2/LAYER2/MAC/defs_NB_IoT.h
+++ b/openair2/LAYER2/MAC/defs_NB_IoT.h
@@ -16,7 +16,7 @@
 //#include "COMMON/openair_defs.h"
 #include "COMMON/platform_constants.h"
 #include "COMMON/mac_rrc_primitives.h"
-#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
+#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h"
 //#include "PHY/defs.h"
 #include "PHY/defs_L1_NB_IoT.h"
 #include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h"
@@ -593,7 +593,7 @@ typedef  struct {
 
 nprach_parameters_NB_IoT_t nprach_list[3];
 
-nfapi_config_request_t config;
+
 
 //DLSF Table
 DLSF_INFO_t DLSF_information;
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 859b31e38de590e6d5ca726e52e42d67d5db07e5..58b053ec39fb9a2f3e15e4fee103b7694f0dadce 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -56,7 +56,7 @@
 #include "UTIL/OSA/osa_defs.h"
 #include "openair2/RRC/NAS/nas_config.h"
 # include "intertask_interface.h"
-#include "enb_paramdef.h"
+#include "ENB_APP/enb_paramdef_NB_IoT.h"
 
 #  include "gtpv1u_eNB_task.h"
 #  include "gtpv1u.h"
@@ -89,7 +89,7 @@ if (NBconfig.NB_IoT_configured > 0)
 #include "openair2/RRC/NBIOT/proto_NB_IoT.h"
 #undef maxDRB
 #define maxDRB maxDRB_NB_r13
-#endif
+
 }
 
 /* pdcp module parameters and related functions*/
diff --git a/openair2/NETWORK_DRIVER/LITE/RB_TOOL/Makefile b/openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/Makefile
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/RB_TOOL/Makefile
rename to openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/Makefile
diff --git a/openair2/NETWORK_DRIVER/LITE/RB_TOOL/rb_tool.c b/openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/rb_tool.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/RB_TOOL/rb_tool.c
rename to openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/rb_tool.c
diff --git a/openair2/NETWORK_DRIVER/LITE/classifier.c b/openair2/NETWORK_DRIVER/NBIOT/classifier.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/classifier.c
rename to openair2/NETWORK_DRIVER/NBIOT/classifier.c
diff --git a/openair2/NETWORK_DRIVER/LITE/common.c b/openair2/NETWORK_DRIVER/NBIOT/common.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/common.c
rename to openair2/NETWORK_DRIVER/NBIOT/common.c
diff --git a/openair2/NETWORK_DRIVER/LITE/constant.h b/openair2/NETWORK_DRIVER/NBIOT/constant.h
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/constant.h
rename to openair2/NETWORK_DRIVER/NBIOT/constant.h
diff --git a/openair2/NETWORK_DRIVER/LITE/device.c b/openair2/NETWORK_DRIVER/NBIOT/device.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/device.c
rename to openair2/NETWORK_DRIVER/NBIOT/device.c
diff --git a/openair2/NETWORK_DRIVER/LITE/ioctl.c b/openair2/NETWORK_DRIVER/NBIOT/ioctl.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/ioctl.c
rename to openair2/NETWORK_DRIVER/NBIOT/ioctl.c
diff --git a/openair2/NETWORK_DRIVER/LITE/ioctl.h b/openair2/NETWORK_DRIVER/NBIOT/ioctl.h
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/ioctl.h
rename to openair2/NETWORK_DRIVER/NBIOT/ioctl.h
diff --git a/openair2/NETWORK_DRIVER/LITE/local.h b/openair2/NETWORK_DRIVER/NBIOT/local.h
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/local.h
rename to openair2/NETWORK_DRIVER/NBIOT/local.h
diff --git a/openair2/NETWORK_DRIVER/LITE/netlink.c b/openair2/NETWORK_DRIVER/NBIOT/netlink.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/netlink.c
rename to openair2/NETWORK_DRIVER/NBIOT/netlink.c
diff --git a/openair2/NETWORK_DRIVER/LITE/proto_extern.h b/openair2/NETWORK_DRIVER/NBIOT/proto_extern.h
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/proto_extern.h
rename to openair2/NETWORK_DRIVER/NBIOT/proto_extern.h
diff --git a/openair2/NETWORK_DRIVER/LITE/sap.h b/openair2/NETWORK_DRIVER/NBIOT/sap.h
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/sap.h
rename to openair2/NETWORK_DRIVER/NBIOT/sap.h
diff --git a/openair2/NETWORK_DRIVER/LITE/tool.c b/openair2/NETWORK_DRIVER/NBIOT/tool.c
similarity index 100%
rename from openair2/NETWORK_DRIVER/LITE/tool.c
rename to openair2/NETWORK_DRIVER/NBIOT/tool.c