diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 91b25e56127e2facaf0bfd0f7f74dca3d7dc433b..febe8def29b01cc96132398ac4392053cbbc991e 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -27,7 +27,7 @@
 #  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
 #
 ################################################################################
-# file build_oai.bash
+# file build_oai
 # brief OAI automated build tool that can be used to install, compile, run OAI.
 # author  Navid Nikaein, Lionel GAUTHIER, Laurent Thomas
 
@@ -37,69 +37,127 @@
 ################################
 ORIGIN_PATH=$PWD
 THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
-source $THIS_SCRIPT_PATH/tools/build_helper.bash
+source $THIS_SCRIPT_PATH/tools/build_helper
 
+MSC_GEN="False"
 XFORMS="False"
 VCD_TIMING="False"
 REL="Rel10"
 HW="EXMIMO"
 
-until [ -z "$1" ]
-do
+function print_help() {
+  echo_info '
+This program installs OpenAirInterface Software
+You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
+Options
+-h
+   This help
+-c | --clean
+   Erase all files to make a rebuild from start" 
+-C | --clean-all
+   Erase all files made by previous compilations, installations" 
+--clean-kernel
+   Erase previously installed features in kernel: iptables, drivers, ...
+-I | --install-external-packages 
+   Installs required packages such as LibXML, asn1.1 compiler, freediameter, ...
+   This option will require root password
+--install-optional-packages
+   Install useful but not mandatory packages such as valgrind
+-g | --run-with-gdb
+   Add debugging symbols to compilation directives
+-h | --help
+   Print this help
+--eNB
+   Makes the eNB LTE softmodem
+--UE
+   Makes the UE softmodem
+--EPC
+   Makes the EPC (MME-SPGW, HSS)
+-r | --3gpp-release
+   default is Rel10, 
+   Rel8 limits the implementation to 3GPP Release 8 version
+-w | --hardware
+   EXMIMO (Default), USRP, None
+   Adds this RF board support (in external packages installation and in compilation)
+--oaisim
+   Makes the oaisim simulator
+--phy_simulators
+   Makes the unitary tests Layer 1 simulators
+--core_simulators
+   Makes the core security features unitary simulators
+-s | --check
+   runs a set of auto-tests based on simulators and several compilation tests
+-V | --vcd
+   Adds a debgging facility to the binary files: GUI with major internal synchronization events
+-x | --xforms
+   Adds a software oscilloscope feature to the produced binaries
+--install-system-files
+   Install OpenArInterface required files in Linux system 
+   (will ask root password)
+Typical Options for a quick startup with a COTS UE and Eurecom RF board: build_oai -I -g -eNB -EPC -x --install-system-files'
+}
+
+
+function main() {
+  until [ -z "$1" ]
+  do
     case "$1" in
-	-c | --clean)
-	    CLEAN=1
-	    clean_all_files
-	    echo_info "Erased all previously producted files"
+       -c | --clean)
+            CLEAN=1
+            shift;;
+       -C | --clean-all)
+            CLEAN_ALL=1
             shift;;
-	--clean-kernel)
-	    clean_kernel
-	    echo_info "Erased iptables config and removed modules from kernel"
+       --clean-kernel)
+            clean_kernel
+            echo_info "Erased iptables config and removed modules from kernel"
             shift;;
-	-I | --install-external-packages)
+       -I | --install-external-packages)
             INSTALL_EXTERNAL=1
             echo_info "Will install external packages"
             shift;;
-	--install-optional-packages)
+       --install-optional-packages)
             INSTALL_OPTIONAL=1
             echo_info "Will install optional packages"
             shift;;
-	-g | --run-with-gdb)
+       -g | --run-with-gdb)
             GDB=1
             echo_info "Will Compile with gdb symbols"
             shift;;
-	--eNB)
-	    eNB=1
-	    echo_info "Will compile eNB"
-	    shift;;
-	--UE)
-	    UE=1
-	    echo_info "Will compile UE"
-	    shift;;
-	--EPC)
-	    EPC=1
-	    echo_info "Will compile EPC"
-	    shift;;
+       --eNB)
+            eNB=1
+            echo_info "Will compile eNB"
+            shift;;
+       --UE)
+            UE=1
+            echo_info "Will compile UE"
+            shift;;
+       --EPC)
+            EPC=1
+            echo_info "Will compile EPC"
+            shift;;
        -r | --3gpp-release)
             REL=$2 
             echo_info "setting release to: $REL"
             shift 2;;
        -w | --hardware)
             HW="$2" #"${i#*=}"
+            # Use OAI_USRP  as the key work USRP is used inside UHD driver
+            [ "$HW" == "USRP" ] && HW=OAI_USRP
             echo_info "setting hardware to: $HW"
             shift 2;;
-	--oaisim)
-	    oaisim=1
-	    echo_info "Will compile oaisim and drivers nasmesh, ..."
-	    shift;;
-	--phy_simulators)
+       --oaisim)
+            oaisim=1
+            echo_info "Will compile oaisim and drivers nasmesh, ..."
+            shift;;
+       --phy_simulators)
             SIMUS_PHY=1
-	    echo_info "Will compile dlsim, ulsim, ..."
-	    shift;;
-	--core_simulators)
-	    SIMUS_CORE=1
-	    echo_info "Will compile security unitary tests"
-	    shift;;
+            echo_info "Will compile dlsim, ulsim, ..."
+            shift;;
+       --core_simulators)
+            SIMUS_CORE=1
+            echo_info "Will compile security unitary tests"
+            shift;;
        -s | --check)
             OAI_TEST=1
             echo_info "Will run auto-tests"
@@ -114,10 +172,10 @@ do
             EXE_ARGUMENTS="$EXE_ARGUMENTS -d"
             echo_info "Will generate the software oscilloscope features"
             shift;;
-	--install-system-files)
-	    INSTALL_SYSTEM_FILES=1
-	    echo_info "Will copy OpenAirInterface files in Linux directories"
-	    shift;;
+       --install-system-files)
+            INSTALL_SYSTEM_FILES=1
+            echo_info "Will copy OpenAirInterface files in Linux directories"
+            shift;;
         -h | --help)
             print_help
             exit 1;;
@@ -126,51 +184,68 @@ do
             echo_fatal "Unknown option $1"
             break;;
    esac
-done
+  done
 
-############################################
-# setting and printing OAI envs, we should check here
-############################################
+  ############################################
+  # setting and printing OAI envs, we should check here
+  ############################################
     
-echo_info "2. Setting the OAI PATHS ..."
-
-set_openair_env 
-cecho "OPENAIR_HOME    = $OPENAIR_HOME" $green
-
-dbin=$OPENAIR_HOME/targets/bin
-dlog=$OPENAIR_HOME/cmake_targets/log
-mkdir -p $dbin $dlog
-
-if [ "$INSTALL_EXTERNAL" = "1" ] ; then
-   echo_info "Installing packages"
-   check_install_oai_software
-   echo_info "Making X.509 certificates"
-   make_certs eur
-   if [ "$HW" == "USRP" ] ; then
-     echo_info "installing packages for USRP support"
-     check_install_usrp_uhd_driver
-   fi
-fi
+  echo_info "2. Setting the OAI PATHS ..."
 
-if [ "$INSTALL_OPTIONAL" = "1" ] ; then
-   echo_info "Installing optional packages"
-   check_install_additional_tools
-fi
+  set_openair_env 
+  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
 
-echo_info "3. building the compilation directives ..."
+  # for conf files copy in this bash script
+  if [ -d /usr/lib/freeDiameter ]; then
+    export FREEDIAMETER_PREFIX=/usr
+  else
+    if [ -d /usr/local/lib/freeDiameter ]; then
+      export FREEDIAMETER_PREFIX=/usr/local
+    else
+      echo_warning "FreeDiameter prefix not found, install freeDiameter if EPC, HSS"
+    fi
+  fi
 
-DIR=$OPENAIR_HOME/cmake_targets
 
+  if [ "$CLEAN_ALL" = "1" ] ; then
+    clean_all_files
+    echo_info "Erased all previously producted files"
+  fi
 
-if [ "$eNB" = "1" -o "UE" = "1" ] ; then
+  dbin=$OPENAIR_DIR/targets/bin
+  dlog=$OPENAIR_DIR/cmake_targets/log
+  mkdir -p $dbin $dlog
+
+  if [ "$INSTALL_EXTERNAL" = "1" ] ; then
+    echo_info "Installing packages"
+    check_install_oai_software
+    echo_info "Making X.509 certificates"
+    make_certs eur
+    if [ "$HW" == "OAI_USRP" ] ; then
+      echo_info "installing packages for USRP support"
+      check_install_usrp_uhd_driver
+    fi
+  fi
+
+  if [ "$INSTALL_OPTIONAL" = "1" ] ; then
+    echo_info "Installing optional packages"
+    check_install_additional_tools
+  fi
+
+  echo_info "3. building the compilation directives ..."
+
+  DIR=$OPENAIR_DIR/cmake_targets
+
+
+  if [ "$eNB" = "1" -o "UE" = "1" ] ; then
     # LTE softmodem compilation
     mkdir -p $DIR/lte_build_oai/build
     cmake_file=$DIR/lte_build_oai/CMakeLists.txt
-    echo "cmake_minimum_required(VERSION 2.8)" > $cmake_file
-    echo "set(XFORMS $XFORMS )" >>  $cmake_file
-    echo "set(RRC_ASN1_VERSION \"${REL}\")" >>  $cmake_file
-    echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
-    echo "set(RF_BOARD \"${HW}\")" >>  $cmake_file
+    echo "cmake_minimum_required(VERSION 2.8)"   >   $cmake_file
+    echo "set(XFORMS $XFORMS )"                  >>  $cmake_file
+    echo "set(RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
+    echo "set(ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
+    echo "set(RF_BOARD \"${HW}\")"               >>  $cmake_file
     echo 'set(PACKAGE_NAME "\"lte-softmodem\"")' >>  $cmake_file
     echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
     cd  $DIR/lte_build_oai/build
@@ -180,9 +255,9 @@ if [ "$eNB" = "1" -o "UE" = "1" ] ; then
 	lte_build_oai lte-softmodem \
 	lte-softmodem lte-softmodem.$REL 
 
-fi
+  fi
 
-if [ "$UE" = 1 ] ; then
+  if [ "$UE" = 1 ] ; then
     # ue_ip driver compilation
     echo_info "Compiling UE specific part"
     compilations \
@@ -194,44 +269,44 @@ if [ "$UE" = 1 ] ; then
     compilations \
 	lte_build_oai nvram \
 	nvram $dbin/nvram
-fi
+  fi
 
-if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
+  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
     cd $OPENAIR_DIR/cmake_targets/lte-simulators
     [ "$CLEAN" = "1" ] && rm -rf build
     mkdir -p build
     cd build
     rm -f *sim
     cmake ..
-fi
+  fi
 
-if [ "$SIMUS_PHY" = "1" ] ; then
-   # lte unitary simulators compilation
-   echo_info "Compiling unitary tests simulators"
-   simlist="dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
-   for f in $simlist ; do
-       compilations \
-	   lte-simulators $f \
-	   $f $dbin/$f.$REL
-   done
-fi
+  if [ "$SIMUS_PHY" = "1" ] ; then
+    # lte unitary simulators compilation
+    echo_info "Compiling unitary tests simulators"
+    simlist="dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
+    for f in $simlist ; do
+      compilations \
+      lte-simulators $f \
+	  $f $dbin/$f.$REL
+    done
+  fi
 
-# Core simulators 
-#############
-if [ "$SIMUS_CORE" = "1" ] ; then
-   # lte unitary simulators compilation
-   echo_info "Compiling unitary tests simulators"
-   simlist="secu_knas_encrypt_eia1 secu_kenb aes128_ctr_encrypt aes128_ctr_decrypt secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2"
-   for f in $simlist ; do
-       compilations \
-	   lte-simulators test_$f \
-	   test_$f $dbin/test_$f.$REL
-   done
-fi
+  # Core simulators 
+  #############
+  if [ "$SIMUS_CORE" = "1" ] ; then
+    # lte unitary simulators compilation
+    echo_info "Compiling unitary tests simulators"
+    simlist="secu_knas_encrypt_eia1 secu_kenb aes128_ctr_encrypt aes128_ctr_decrypt secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2"
+    for f in $simlist ; do
+      compilations \
+	  lte-simulators test_$f \
+	  test_$f $dbin/test_$f.$REL
+    done
+  fi
 
-# EXMIMO drivers & firmware loader
-###############
-if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then
+  # EXMIMO drivers & firmware loader
+  ###############
+  if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then
     echo_info "Compiling Express MIMO 2 board drivers"
     compilations \
         lte_build_oai openair_rf \
@@ -239,9 +314,9 @@ if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then
     compilations \
 	lte_build_oai updatefw \
 	updatefw $dbin/updatefw 
-fi
+  fi
 
-if [ "$oaisim" = "1" ] ; then
+  if [ "$oaisim" = "1" ] ; then
     echo_info "Compiling oaisim"
     cmake_file=$DIR/oaisim_build_oai/CMakeLists.txt
     cp $DIR/oaisim_build_oai/CMakeLists.template $cmake_file
@@ -276,95 +351,95 @@ if [ "$oaisim" = "1" ] ; then
     compilations \
 	oaisim_mme_build_oai oaisim_mme \
 	oaisim_mme $dbin/oaisim_mme.$REL
-fi
+  fi
+
+  # EPC compilation
+  ##################
+  if [ "$EPC" = "1" ] ; then
+    echo_info "Compiling EPC"
+    cmake_file=$DIR/epc_build_oai/CMakeLists.txt
+    cp $DIR/epc_build_oai/CMakeLists.template $cmake_file
+    echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
+    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
+    
+    [ "$CLEAN" = "1" ] && rm -rf $DIR/epc_build_oai/build
+    mkdir -p $DIR/epc_build_oai/build
+    cd $DIR/epc_build_oai/build
+    cmake ..
+    compilations \
+      epc_build_oai mme_gw \
+      mme_gw $dbin/mme_gw.$REL
+    # Only integrated mme+sgw+pgw is operational today
+    #    compilations \
+    #  epc_build_oai oai_sgw \
+    #  oai_sgw $dbin/oai_sgw.$REL
+    compilations \
+      epc_build_oai xt_GTPUAH_lib \
+      libxt_GTPUAH_lib.so $dbin
+    compilations \
+      epc_build_oai xt_GTPURH_lib \
+      libxt_GTPURH_lib.so $dbin
+    compilations \
+      epc_build_oai xt_GTPURH \
+      CMakeFiles/xt_GTPURH/xt_GTPURH.ko $dbin
+    compilations \
+      epc_build_oai xt_GTPUAH \
+      CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin
+
 
-# EPC compilation
-##################
-if [ "$EPC" = "1" ] ; then
-  echo_info "Compiling EPC"
-  cmake_file=$DIR/epc_build_oai/CMakeLists.txt
-  cp $DIR/epc_build_oai/CMakeLists.template $cmake_file
-  echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
-  echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
-  mkdir -p $DIR/epc_build_oai/build
-  cd $DIR/epc_build_oai/build
-  cmake ..
-  compilations \
-  epc_build_oai mme_gw \
-  mme_gw $dbin/mme_gw.$REL
-# Only integrated mme+sgw+pgw is operational today
-#    compilations \
-#  epc_build_oai oai_sgw \
-#  oai_sgw $dbin/oai_sgw.$REL
-  compilations \
-    epc_build_oai xt_GTPUAH_lib \
-    libxt_GTPUAH_lib.so $dbin
-  compilations \
-    epc_build_oai xt_GTPURH_lib \
-    libxt_GTPURH_lib.so $dbin
-  compilations \
-    epc_build_oai xt_GTPURH \
-    CMakeFiles/xt_GTPURH/xt_GTPURH.ko $dbin
-  compilations \
-    epc_build_oai xt_GTPUAH \
-    CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin
-
-  if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
-    # Example HSS and EPC run on the same host
-    $OPENAIR_HOME/cmake_targets/tools/build_hss --clean --debug --install-hss-files --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
-    # example HHS and EPC run on separate hosts (can use SCTP)
-    # $OPENAIR_HOME/cmake_targets/tools/build_hss --clean --debug --install-hss-files
-  else
     # Example HSS and EPC run on the same host
-    $OPENAIR_HOME/cmake_targets/tools/build_hss --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
+    if [ "$CLEAN" = "1" ]; then
+      $OPENAIR_DIR/cmake_targets/tools/build_hss --clean --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
+    else
+      $OPENAIR_DIR/cmake_targets/tools/build_hss --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
+    fi
     # example HHS and EPC run on separate hosts (can use SCTP)
-    # $OPENAIR_HOME/cmake_targets/tools/build_hss --debug 
-  fi
-fi
-
-if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
+    # $OPENAIR_DIR/cmake_targets/tools/build_hss --debug 
 
     echo_info "Copying iptables libraries into system directory: /lib/xtables"
     if [ -f  $dbin/libxt_GTPURH_lib.so ] ; then
-	$SUDO rm -f /lib/xtables/libxt_GTPURH.so /lib/xtables/libxt_GTPUAH.s
-	$SUDO ln -s $dbin/libxt_GTPURH_lib.so /lib/xtables/libxt_GTPURH.so
-	$SUDO ln -s $dbin/libxt_GTPUAH_lib.so /lib/xtables/libxt_GTPUAH.so
+      $SUDO rm -f /lib/xtables/libxt_GTPURH.so /lib/xtables/libxt_GTPUAH.so
+      $SUDO ln -s $dbin/libxt_GTPURH_lib.so /lib/xtables/libxt_GTPURH.so
+      $SUDO ln -s $dbin/libxt_GTPUAH_lib.so /lib/xtables/libxt_GTPUAH.so
     else
-	echo_warning "not installed GTP-U iptables: binaries not found"
+      echo_warning "not installed GTP-U iptables: binaries not found"
     fi
 
     dconf=$OPENAIR_TARGETS/bin
     mkdir -p $dconf
-#LG???    cp $ORIGIN_PATH/$CONFIG_FILE $dconf || echo_fatal "config file $ORIGIN_PATH/$CONFIG_FILE not found"
+    #cp $ORIGIN_PATH/$CONFIG_FILE $dconf || echo_error "config file $ORIGIN_PATH/$CONFIG_FILE not found"
 
     # generate USIM data
     if [ -f $dbin/nvram ]; then
-	install_nas_tools $dbin $dconf
+      install_nas_tools $dbin $dconf
     else
-	echo_warning "not generated UE NAS files: binaries not found"
+      echo_warning "not generated UE NAS files: binaries not found"
     fi	
 
+
     # Do EPC
-    if [ -f $DIR/epc_build_oai/build/epc_s6a.conf ] ; then
-	cp $DIR/epc_build_oai/build/epc.*.conf $dconf
-	$SUDO cp  $DIR/epc_build_oai/build/epc_s6a.conf  /usr/local/etc/freeDiameter
+    if [ -f $DIR/epc_build_oai/build/mme_fd.conf ] ; then
+      cp $DIR/epc_build_oai/build/epc.*.conf $dconf
+      $SUDO cp -uv $DIR/epc_build_oai/build/mme_fd.conf  $FREEDIAMETER_PREFIX/etc/freeDiameter
     else
-	echo_warning "not installed EPC config files: not found"
+      echo_warning "not installed EPC config files: not found"
     fi
 
     # Do HSS 
     # bash doesn't like space char around = char
-    #cp $DIR/hss_build/hss.conf $dbin
-    #$SUDO cp  $DIR/hss_build/build/hss_fd.conf $DIR/hss_build/acl.conf /usr/local/etc/freeDiameter
+    cp -uv $DIR/hss_build/build/hss.conf $dbin
+    $SUDO cp -uv $DIR/hss_build/build/hss_fd.conf $DIR/hss_build/build/acl.conf $FREEDIAMETER_PREFIX/etc/freeDiameter
     
-    if [ -f $dbin/hss.conf ] ; then
-	sed -e 's/ *= */=/' $dbin/hss.conf > $dconf/hss.conf.nospace
-	source $dconf/hss.conf.nospace
-	rm -f $dconf/hss.conf.nospace
-	create_hss_database root linux "$MYSQL_user" "$MYSQL_pass" "$MYSQL_db"
-    else
-	echo_warning "not created HSS database: config not found"
-    fi
+#   if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
+#    if [ -f $dbin/hss.conf ] ; then
+#      sed -e 's/ *= */=/' $dbin/hss.conf > $dconf/hss.conf.nospace
+#      source $dconf/hss.conf.nospace
+#      rm -f $dconf/hss.conf.nospace
+#      create_hss_database root linux "$MYSQL_user" "$MYSQL_pass" "$MYSQL_db"
+#    else
+#      echo_warning "not created HSS database: config not found"
+#    fi
+#  fi
 fi
 
 # Auto-tests 
@@ -376,3 +451,6 @@ if [ "$OAI_TEST" = "1" ]; then
 else 
     echo_info "10. Bypassing the Tests ..."
 fi 
+}
+
+main "$@"