diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index be7aedca658513ddc48d4a785cf77bd783bef70f..980fa3335a232783431a7bb81d1ec43f7615240f 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -2568,9 +2568,7 @@ static void *fep_thread(void *param) {
   PHY_VARS_eNB *eNB = (PHY_VARS_eNB *)param;
   eNB_proc_t *proc  = &eNB->proc;
   while (!oai_exit) {
-    printf("Waiting for parallel FEP signal\n");
     if (wait_on_condition(&proc->mutex_fep,&proc->cond_fep,&proc->instance_cnt_fep,"fep thread")<0) break;  
-    printf("Running parallel FEP on first slot\n");
     fep0(eNB,0);
     if (release_thread(&proc->mutex_fep,&proc->instance_cnt_fep,"fep thread")<0) break;
   }
@@ -2601,8 +2599,6 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP,1);
   start_meas(&eNB->ofdm_demod_stats);
 
-  printf("Running 2 thread FEP\n"); 
-
   if (pthread_mutex_timedlock(&proc->mutex_fep,&wait) != 0) {
     printf("[eNB] ERROR pthread_mutex_lock for fep thread %d (IC %d)\n", proc->instance_cnt_fep);
     exit_fun( "error locking mutex_fep" );
@@ -2618,7 +2614,7 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
   
   ++proc->instance_cnt_fep;
 
-  printf("[eNB] waking up FEP thread\n");  
+
   if (pthread_cond_signal(&proc->cond_fep) != 0) {
     printf("[eNB] ERROR pthread_cond_signal for fep thread\n");
     exit_fun( "ERROR pthread_cond_signal" );
@@ -2628,7 +2624,6 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
   pthread_mutex_unlock( &proc->mutex_fep );
 
   // call second slot in this symbol
-  printf("Calling FEP for 2nd slot\n"); 
   fep0(eNB,1);
 
   if (pthread_mutex_timedlock(&proc->mutex_fep,&wait) != 0) {
@@ -2643,10 +2638,12 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
   };
 
   pthread_mutex_unlock( &proc->mutex_fep );
-  if (wait_cnt>10000) {
+  if (wait_cnt>1000000) {
     printf("[eNB] parallel FEP didn't finish\n");
     exit_fun( "error" );
   }
+
+  stop_meas(&eNB->ofdm_demod_stats);
 }
 
 void eNB_fep_full(PHY_VARS_eNB *eNB) {
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index f7824773e04c51033747f8e1580f5d6878350ada..fb6a9d0288009bc47ccca14186d1786011f8b938 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -13,7 +13,7 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
+    You should haeve received a copy of the GNU General Public License
     along with OpenAirInterface.The full GNU General Public License is
    included in this distribution in the file called "COPYING". If not,
    see <http://www.gnu.org/licenses/>.
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 70510cbc042d6171125257d5bd1bf42db0c9804d..48b3f8cec1d69587c3997fd0713c3ab7e317b934 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -85,8 +85,6 @@ double t_rx_min = 1000000000; /*!< \brief initial min process time for tx */
 int n_tx_dropped = 0; /*!< \brief initial max process time for tx */
 int n_rx_dropped = 0; /*!< \brief initial max process time for rx */
 
-int oai_exit = 0;
-
 
 void fill_ulsch_dci(PHY_VARS_eNB *eNB,void *UL_dci,int first_rb,int nb_rb,int mcs,int ndi,int cqi_flag) {
 
@@ -276,7 +274,7 @@ int main(int argc, char **argv)
   char channel_model_input[10];
 
   uint8_t max_turbo_iterations=4;
-  uint8_t llr8_flag=0;
+  uint8_t parallel_flag=0;
   int nb_rb_set = 0;
 
   int threequarter_fs=0;
@@ -534,7 +532,7 @@ int main(int argc, char **argv)
       break;
 
     case 'L':
-      llr8_flag=1;
+      parallel_flag=1;
       break;
 
     case 'I':
@@ -691,7 +689,7 @@ int main(int argc, char **argv)
   eNB->ulsch[0] = new_eNB_ulsch(max_turbo_iterations,N_RB_DL,0);
   UE->ulsch[0]   = new_ue_ulsch(N_RB_DL,0);
 
-  init_fep_thread(eNB,&eNB->proc.attr_fep);
+  if (parallel_flag == 1) init_fep_thread(eNB,&eNB->proc.attr_fep);
 
   // Create transport channel structures for 2 transport blocks (MIMO)
   for (i=0; i<2; i++) {
@@ -1186,7 +1184,7 @@ int main(int argc, char **argv)
           }
 
 
-	  eNB->fep = eNB_fep_full_2thread;
+	  eNB->fep = (parallel_flag == 1) ? eNB_fep_full_2thread : eNB_fep_full;
 	  eNB->do_prach = NULL;
 
 	  phy_procedures_eNB_common_RX(eNB);
diff --git a/openair1/SIMULATION/LTE_PHY/unitary_defs.h b/openair1/SIMULATION/LTE_PHY/unitary_defs.h
index 1e1c66130ab036df48d48cd81200a56e160fc14a..6fefc47a723fd7e12196c262c3820ebccd524bce 100644
--- a/openair1/SIMULATION/LTE_PHY/unitary_defs.h
+++ b/openair1/SIMULATION/LTE_PHY/unitary_defs.h
@@ -1,4 +1,5 @@
 openair0_device openair0;
+int oai_exit=0;
 
 void exit_fun(const char *s) { exit(-1); }
 
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index d4f83d5a2c57ff8a3e8bbb21eb8d4c1701be4a3b..8781869e1726397a85432b5b15e9bc64daa40b96 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -1634,7 +1634,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
 	break;
       case NGFI_RRU_IF4p5:
 	eNB->do_prach             = do_prach;
-	eNB->fep                  = (eNB->single_thread_flag == 0) ? NB_fep_full : eNB_fep_full_2thread;
+	eNB->fep                  = eNB_fep_full;
 	eNB->proc_uespec_rx       = NULL;
 	eNB->proc_tx              = NULL;//proc_tx_rru_if4p5;
 	eNB->tx_fh                = NULL;
@@ -1661,7 +1661,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
 	break;
       case eNodeB_3GPP:
 	eNB->do_prach             = do_prach;
-	eNB->fep                  = (eNB->single_thread_flag == 0) ? NB_fep_full : eNB_fep_full_2thread;
+	eNB->fep                  = eNB_fep_full;
 	eNB->proc_uespec_rx       = phy_procedures_eNB_uespec_RX;
 	eNB->proc_tx              = proc_tx_full;
 	eNB->tx_fh                = NULL;
@@ -1679,7 +1679,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
 	break;
       case eNodeB_3GPP_BBU:
 	eNB->do_prach       = do_prach;
-	eNB->fep            = (eNB->single_thread_flag == 0) ? NB_fep_full : eNB_fep_full_2thread;
+	eNB->fep            = eNB_fep_full;
 	eNB->proc_uespec_rx = phy_procedures_eNB_uespec_RX;
 	eNB->proc_tx        = proc_tx_full;
 	eNB->tx_fh          = tx_fh_if5;