diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3ccaa4c4..73af2aedb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -275,11 +275,19 @@ if(EXISTS $ENV{GTEST_DIR})
      set(GTEST_DIR $ENV{GTEST_DIR})
 endif(EXISTS $ENV{GTEST_DIR})
 if(GTEST_DIR)
-     message(STATUS "GTEST root folder at ${GTEST_DIR}")
+     message(STATUS "Googletest root folder set at ${GTEST_DIR}")
+     find_path(LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS ${GTEST_DIR})
+          if(LIBGTEST_DEV_DIR)
+         message (STATUS "Googletest has been found.")
+     else(LIBGTEST_DEV_DIR)
+         message (FATAL_ERROR " Googletest source code has not been found at ${GTEST_DIR}.")
+     endif(LIBGTEST_DEV_DIR)
+     find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_DIR}/include)
 else(GTEST_DIR)
-     find_path(LIBGTEST_DEV_DIR NAMES gtest-all.cc PATHS /usr/src/gtest/src)
+     find_path(LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS /usr/src/gtest /opt/local/src/gtest)
+     find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS /usr/include /opt/local/include)
      if(LIBGTEST_DEV_DIR)
-         message (STATUS " Googletest (libgtest-dev package) has been found.")
+         message (STATUS "Googletest (libgtest-dev package) has been found.")
      else(LIBGTEST_DEV_DIR)
          message (STATUS " Googletest has not been found.")
          message (STATUS " Googletest will be downloaded and built automatically ")
diff --git a/conf/gnss-sdr.conf b/conf/gnss-sdr.conf
index fe98edee7..fefbb2730 100644
--- a/conf/gnss-sdr.conf
+++ b/conf/gnss-sdr.conf
@@ -29,10 +29,12 @@ GNSS-SDR.SUPL_CI=0x31b0
 SignalSource.implementation=File_Signal_Source
 
 ;#filename: path to file with the captured GNSS signal samples to be processed
-SignalSource.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat
+;SignalSource.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat
+SignalSource.filename=../../../Documents/workspace/code2/trunk/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat
 
 ;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-SignalSource.item_type=short
+;SignalSource.item_type=short
+SignalSource.item_type=byte
 
 ;#sampling_frequency: Original Signal sampling frequency in [Hz]
 SignalSource.sampling_frequency=4000000
@@ -75,7 +77,10 @@ SignalConditioner.implementation=Signal_Conditioner
 ;######### DATA_TYPE_ADAPTER CONFIG ############
 ;## Changes the type of input data. Please disable it in this version.
 ;#implementation: [Pass_Through] disables this block
-DataTypeAdapter.implementation=Ishort_To_Complex
+;DataTypeAdapter.implementation=Ishort_To_Complex
+;DataTypeAdapter.implementation=Ibyte_To_Cbyte
+DataTypeAdapter.implementation=Pass_Through
+DataTypeAdapter.item_type=byte
 
 ;######### INPUT_FILTER CONFIG ############
 ;## Filter the input data. Can be combined with frequency translation for IF signals
@@ -86,8 +91,8 @@ DataTypeAdapter.implementation=Ishort_To_Complex
 ;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz.
 
 ;InputFilter.implementation=Fir_Filter
-;InputFilter.implementation=Freq_Xlating_Fir_Filter
-InputFilter.implementation=Pass_Through
+InputFilter.implementation=Freq_Xlating_Fir_Filter
+;InputFilter.implementation=Pass_Through
 
 ;#dump: Dump the filtered data to a file.
 InputFilter.dump=false
@@ -100,7 +105,7 @@ InputFilter.dump_filename=../data/input_filter.dat
 ;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands.
 
 ;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
-InputFilter.input_item_type=gr_complex
+InputFilter.input_item_type=byte
 
 ;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version.
 InputFilter.output_item_type=gr_complex
@@ -167,6 +172,7 @@ Resampler.dump_filename=../data/resampler.dat
 
 ;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
 Resampler.item_type=gr_complex
+;Resampler.item_type=cbyte
 
 ;#sample_freq_in: the sample frequency of the input signal
 Resampler.sample_freq_in=8000000
diff --git a/docs/manpage/front-end-cal-manpage b/docs/manpage/front-end-cal-manpage
index e1fed60c8..13d639c57 100644
--- a/docs/manpage/front-end-cal-manpage
+++ b/docs/manpage/front-end-cal-manpage
@@ -1,38 +1,38 @@
-.\" Manpage for front-end-cal.
+.\" Manpage for front\-end\-cal.
 .\" Contact javier.arribas@cttc.es to correct errors or typos.
-.TH front-end-cal 1 "15 Dec 2014" "0.0.1" "front-end-cal man page"
+.TH front\-end\-cal 1 "15 Dec 2014" "0.0.1" "front\-end\-cal man page"
 .SH NAME
-\fBfront-end-cal\fR \- RF front-end center frequency and sampling rate calibration tool.
+\fBfront\-end\-cal\fR \- RF front\-end center frequency and sampling rate calibration tool.
 .SH SYNOPSIS
-\fBfront-end-cal -config_file=\fR\fI<path-to-configuration-file>\fR [OPTION]...
+\fBfront\-end\-cal \-config_file=\fR\fI<path\-to\-configuration\-file>\fR [OPTION]...
 .SH DESCRIPTION
-\fBfront-end-cal\fR is a calibration tool for some DVB-T receivers based on the Taiwan's Realtek RTL2832U chipset, sold in form of USB dongles that allow users to watch over-the-air DVB-T European broadcast television on their personal computers, to be used as GNSS front-ends.
+\fBfront\-end\-cal\fR is a calibration tool for some DVB\-T receivers based on the Taiwan's Realtek RTL2832U chipset, sold in form of USB dongles that allow users to watch over\-the\-air DVB\-T European broadcast television on their personal computers, to be used as GNSS front\-ends.
 \.TP
-Normally, those devices send partially-decoded MPEG transport frames over the USB, but exploiting an undocumented mode of operation of the demodulator chip, the user is able to obtain raw I&Q samples, stream them through USB to a personal computer and then use \fBgnss-sdr\fR, turning the DVB-T receiver into a GNSS receiver and delivering position in real-time.
+Normally, those devices send partially\-decoded MPEG transport frames over the USB, but exploiting an undocumented mode of operation of the demodulator chip, the user is able to obtain raw I&Q samples, stream them through USB to a personal computer and then use \fBgnss\-sdr\fR, turning the DVB\-T receiver into a GNSS receiver and delivering position in real\-time.
 \.TP
-The crystal oscillator that ships with the RTL2832U family devices exhibits limited accuracy to be used as a GNSS receiver front-end without previous calibration. \fBfront-end-cal\fR automatizes the algorithm proposed in [1], and it requires Internet access since it retrieves Assisted GPS data from SUPL servers.
+The crystal oscillator that ships with the RTL2832U family devices exhibits limited accuracy to be used as a GNSS receiver front\-end without previous calibration. \fBfront\-end\-cal\fR implements the algorithm proposed in [1], and it requires Internet access since it retrieves Assisted GPS data from SUPL servers.
 \.TP
-\fBfront-end-cal\fR is able to work with raw data files or, if there is computational power enough, in real time with suitable radiofrequency front-ends. The whole receiver is defined in a single configuration file, and therefore users can define theirs.
+\fBfront\-end\-cal\fR is able to work with raw data files or, if there is computational power enough, in real time with suitable radio frequency front\-ends. The whole receiver is defined in a single configuration file, and therefore users can define theirs.
 .SH OPTIONS
-\fBfront-end-cal\fR takes the following options:
+\fBfront\-end\-cal\fR takes the following options:
 .TP
-\fB-config_file=\fR\fI<path-to-configuration-file>\fR Set the configuration file.
+\fB\-config_file=\fR\fI<path\-to\-configuration\-file>\fR Set the configuration file.
 .TP 
-\fB-signal_source=\fR\fI<path-to-raw-signal-file>\fR If defined, path to the file containing the signal samples (overrides the data file specified in the configuration file).
+\fB\-signal_source=\fR\fI<path\-to\-raw\-signal\-file>\fR If defined, path to the file containing the signal samples (overrides the data file specified in the configuration file).
 .TP 
-\fB-log_dir=\fR\fI<path-to-directory>\fR If defined, overrides the default directory where logs are saved.
+\fB\-log_dir=\fR\fI<path\-to\-directory>\fR If defined, overrides the default directory where logs are saved.
 .TP
-\fB-version\fR Print program version and exit.
+\fB\-version\fR Print program version and exit.
 .TP
-\fB-help\fR Print all the available commandline flags and exit.
+\fB\-help\fR Print all the available commandline flags and exit.
 .SH SEE ALSO
-.BR gnss-sdr (1), volk_gnsssdr_profile (1)
+.BR gnss\-sdr (1), volk_gnsssdr_profile (1)
 \.TP
-Example of configuration file available at: ${prefix}/share/gnss-sdr/conf/front-end-cal.conf, where ${prefix}$ uses to be /usr or /usr/local. This will be the configuration file used by default if the \fB-config_file\fR option is not set.
+Example of configuration file available at: ${prefix}/share/gnss\-sdr/conf/front\-end\-cal.conf, where ${prefix}$ uses to be /usr or /usr/local. This will be the configuration file used by default if the \fB\-config_file\fR option is not set.
 \.TP
-[1] C. Fernandez-Prades, J. Arribas, P. Closas, \fITurning a Television into a GNSS Receiver\fR, in Proceedings of ION GNSS+, 15-16 September 2013, Nashville, Tennessee (USA). A draft copy is freely available at http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/
+[1] C. Fernandez\-Prades, J. Arribas, P. Closas, \fITurning a Television into a GNSS Receiver\fR, in Proceedings of ION GNSS+, 15\-16 September 2013, Nashville, Tennessee (USA). A draft copy is freely available at http://www.cttc.es/publication/turning\-a\-television\-into\-a\-gnss\-receiver/
 \.TP
-Check http://gnss-sdr.org for more information.
+Check http://gnss\\-sdr.org for more information.
 .SH BUGS
 No known bugs.
 .SH AUTHOR
diff --git a/docs/manpage/gnss-sdr-manpage b/docs/manpage/gnss-sdr-manpage
index 7e44ea909..1ee21a122 100644
--- a/docs/manpage/gnss-sdr-manpage
+++ b/docs/manpage/gnss-sdr-manpage
@@ -1,37 +1,37 @@
-.\" Manpage for gnss-sdr.
+.\" Manpage for gnss\-sdr.
 .\" Contact carles.fernandez@cttc.es to correct errors or typos.
-.TH gnss-sdr 1 "14 Nov 2014" "0.0.5" "gnss-sdr man page"
+.TH gnss\-sdr 1 "14 Nov 2014" "0.0.5" "gnss\-sdr man page"
 .SH NAME
-\fBgnss-sdr\fR \- GNSS Software Defined Receiver.
+\fBgnss\-sdr\fR \- GNSS Software Defined Receiver.
 .SH SYNOPSIS
-\fBgnss-sdr -config_file=\fR\fI<path-to-configuration-file>\fR [OPTION]...
+\fBgnss\-sdr \-config_file=\fR\fI<path\-to\-configuration\-file>\fR [OPTION]...
 .SH DESCRIPTION
-\fBgnss-sdr\fR is a Global Navigation Satellite Systems Software Defined Receiver written in C++. It implements all the signal processing chain, taking as input raw samples coming from the output of an Analog-to-Digital Converter, and processing them up to the computation of the Position-Velocity-Time solution, including the generation of code and phase observables. 
+\fBgnss\-sdr\fR is a Global Navigation Satellite Systems Software Defined Receiver written in C++. It implements all the signal processing chain, taking as input raw samples coming from the output of an Analog\-to\-Digital Converter, and processing them up to the computation of the Position\-Velocity\-Time solution, including the generation of code and phase measurements. 
 \.TP
-\fBgnss-sdr\fR is able to work with raw data files or, if there is computational power enough, in real time with suitable radiofrequency front-ends. The whole receiver is defined in a single configuration file, and therefore users can define theirs.
+\fBgnss\-sdr\fR is able to work with raw data files or, if there is computational power enough, in real time with suitable radio frequency front\-ends. The whole receiver is defined in a single configuration file, and therefore users can define theirs.
 .SH OPTIONS
-\fBgnss-sdr\fR takes the following options:
+\fBgnss\-sdr\fR takes the following options:
 .TP
-\fB-config_file=\fR\fI<path-to-configuration-file>\fR Set the configuration file.
+\fB\-config_file=\fR\fI<path\-to\-configuration\-file>\fR Set the configuration file.
 .TP 
-\fB-signal_source=\fR\fI<path-to-raw-signal-file>\fR If defined, path to the file containing the signal samples (overrides the data file specified in the configuration file).
+\fB\-signal_source=\fR\fI<path\-to\-raw\-signal\-file>\fR If defined, path to the file containing the signal samples (overrides the data file specified in the configuration file).
 .TP 
-\fB-log_dir=\fR\fI<path-to-directory>\fR If defined, overrides the default directory where logs are saved.
+\fB\-log_dir=\fR\fI<path\-to\-directory>\fR If defined, overrides the default directory where logs are saved.
 .TP
-\fB-RINEX_version=\fI<version>\fR Specifies the RINEX version (2.11 or 3.02). Default: "3.02".
+\fB\-RINEX_version=\fI<version>\fR Specifies the RINEX version (2.11 or 3.02). Default: "3.02".
 .TP
-\fB-version\fR Print program version and exit.
+\fB\-version\fR Print program version and exit.
 .TP
-\fB-help\fR Print all the available commandline flags and exit.
+\fB\-help\fR Print all the available commandline flags and exit.
 .SH SEE ALSO
 .BR volk_gnsssdr_profile (1)
 \.TP
-Examples of configuration files available at: ${prefix}/share/gnss-sdr/conf, where ${prefix}$ uses to be /usr or /usr/local.
+Examples of configuration files available at: ${prefix}/share/gnss\-sdr/conf, where ${prefix} uses to be /usr or /usr/local.
 \.TP
-Check http://gnss-sdr.org for more information.
+Check http://gnss\-sdr.org for more information.
 .SH BUGS
 No known bugs.
 .SH AUTHOR
-Carles Fernandez-Prades (carles.fernandez@cttc.es)
+Carles Fernandez\-Prades (carles.fernandez@cttc.es)
 \.TP
 This software package has been developed at CTTC (Centre Tecnologic de Telecomunicacions de Catalunya, http://www.cttc.es) with contributions from around the world.
\ No newline at end of file
diff --git a/src/algorithms/PVT/adapters/galileo_e1_pvt.cc b/src/algorithms/PVT/adapters/galileo_e1_pvt.cc
index 8a62b5170..ac43d857a 100644
--- a/src/algorithms/PVT/adapters/galileo_e1_pvt.cc
+++ b/src/algorithms/PVT/adapters/galileo_e1_pvt.cc
@@ -86,14 +86,16 @@ GalileoE1Pvt::~GalileoE1Pvt()
 
 void GalileoE1Pvt::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void GalileoE1Pvt::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 gr::basic_block_sptr GalileoE1Pvt::get_left_block()
diff --git a/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc b/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc
index 6c6c4020e..b72eb3f87 100644
--- a/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc
+++ b/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc
@@ -85,14 +85,16 @@ GpsL1CaPvt::~GpsL1CaPvt()
 
 void GpsL1CaPvt::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void GpsL1CaPvt::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 gr::basic_block_sptr GpsL1CaPvt::get_left_block()
diff --git a/src/algorithms/PVT/adapters/hybrid_pvt.cc b/src/algorithms/PVT/adapters/hybrid_pvt.cc
index bcad69bfb..6b7b751c7 100644
--- a/src/algorithms/PVT/adapters/hybrid_pvt.cc
+++ b/src/algorithms/PVT/adapters/hybrid_pvt.cc
@@ -86,14 +86,16 @@ HybridPvt::~HybridPvt()
 
 void HybridPvt::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void HybridPvt::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 gr::basic_block_sptr HybridPvt::get_left_block()
diff --git a/src/algorithms/PVT/libs/rinex_printer.cc b/src/algorithms/PVT/libs/rinex_printer.cc
index 0462bca1d..0bccdd268 100644
--- a/src/algorithms/PVT/libs/rinex_printer.cc
+++ b/src/algorithms/PVT/libs/rinex_printer.cc
@@ -932,7 +932,7 @@ void Rinex_Printer::log_rinex_nav(std::ofstream& out, const std::map<int,Gps_Eph
     		gps_ephemeris_iter++)
     {
             // -------- SV / EPOCH / SV CLK
-            boost::posix_time::ptime p_utc_time = Rinex_Printer::compute_GPS_time(gps_ephemeris_iter->second,gps_ephemeris_iter->second.d_TOW);
+            boost::posix_time::ptime p_utc_time = Rinex_Printer::compute_GPS_time(gps_ephemeris_iter->second, gps_ephemeris_iter->second.d_Toe);
             std::string timestring = boost::posix_time::to_iso_string(p_utc_time);
             std::string month (timestring, 4, 2);
             std::string day (timestring, 6, 2);
@@ -946,15 +946,55 @@ void Rinex_Printer::log_rinex_nav(std::ofstream& out, const std::map<int,Gps_Eph
                     std::string year (timestring, 2, 2);
                     line += year;
                     line += std::string(1, ' ');
-                    line += month;
+                    if(boost::lexical_cast<int>(month) < 10)
+                        {
+                            line += std::string(1, ' ');
+                            line += std::string(month, 1, 1);
+                        }
+                    else
+                        {
+                            line += month;
+                        }
                     line += std::string(1, ' ');
-                    line += day;
+                    if(boost::lexical_cast<int>(day) < 10)
+                        {
+                            line += std::string(1, ' ');
+                            line += std::string(day, 1, 1);
+                        }
+                    else
+                        {
+                            line += day;
+                        }
                     line += std::string(1, ' ');
-                    line += hour;
+                    if(boost::lexical_cast<int>(hour) < 10)
+                        {
+                            line += std::string(1, ' ');
+                            line += std::string(hour, 1, 1);
+                        }
+                    else
+                        {
+                            line += hour;
+                        }
                     line += std::string(1, ' ');
-                    line += minutes;
+                    if(boost::lexical_cast<int>(minutes) < 10)
+                        {
+                            line += std::string(1, ' ');
+                            line += std::string(minutes, 1, 1);
+                        }
+                    else
+                        {
+                            line += minutes;
+                        }
                     line += std::string(1, ' ');
-                    line += seconds;
+                    if(boost::lexical_cast<int>(seconds) < 10)
+                        {
+                            line += std::string(1, ' ');
+                            line += std::string(seconds, 1, 1);
+                        }
+                    else
+                        {
+                            line += seconds;
+                        }
                     line += std::string(1, '.');
                     std::string decimal = std::string("0");
                     if (timestring.size() > 16)
@@ -1010,18 +1050,15 @@ void Rinex_Printer::log_rinex_nav(std::ofstream& out, const std::map<int,Gps_Eph
                 {
                     line += std::string(5, ' ');
                 }
-            // IODE is not present in ephemeris data
             // If there is a discontinued reception the ephemeris is not validated
-            //if (gps_ephemeris_iter->second.d_IODE_SF2 == gps_ephemeris_iter->second.d_IODE_SF3)
-            //    {
-            //        line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_IODE_SF2, 18, 2);
-            //    }
-            //else
-            //    {
-            //        LOG(ERROR) << "Discontinued reception of Frame 2 and 3 " << std::endl;
-            //    }
-            double d_IODE_SF2 = 0;
-            line += Rinex_Printer::doub2for(d_IODE_SF2, 18, 2);
+            if (gps_ephemeris_iter->second.d_IODE_SF2 == gps_ephemeris_iter->second.d_IODE_SF3)
+                {
+                    line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_IODE_SF2, 18, 2);
+                }
+            else
+                {
+                    LOG(WARNING) << "Discontinued reception of Frame 2 and 3";
+                }
             line += std::string(1, ' ');
             line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_Crs, 18, 2);
             line += std::string(1, ' ');
@@ -2145,7 +2182,12 @@ void Rinex_Printer::log_rinex_obs(std::ofstream& out, const Gps_Ephemeris& eph,
             line += std::string(1, ' ');
             line += minutes;
             line += std::string(1, ' ');
-            line += Rinex_Printer::asString(fmod(gps_t, 60), 7);
+            double second_ = fmod(gps_t, 60);
+            if (second_ < 10)
+                {
+                    line += std::string(1, ' ');
+                }
+            line += Rinex_Printer::asString(second_, 7);
             line += std::string(2, ' ');
             // Epoch flag 0: OK     1: power failure between previous and current epoch   <1: Special event
             line += std::string(1, '0');
@@ -2195,12 +2237,33 @@ void Rinex_Printer::log_rinex_obs(std::ofstream& out, const Gps_Ephemeris& eph,
                         {
                             lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
                         }
+
+                    // Signal Strength Indicator (SSI)
+                    int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
                     // GPS L1 CA PHASE
                     lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
+                    if (lli == 0)
+                        {
+                            lineObs += std::string(1, ' ');
+                        }
+                    else
+                        {
+                            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                        }
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
                     // GPS L1 CA DOPPLER
                     lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
+                    if (lli == 0)
+                        {
+                            lineObs += std::string(1, ' ');
+                        }
+                    else
+                        {
+                            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                        }
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
                     //GPS L1 SIGNAL STRENGTH
-                    //int ssi=signalStrength(54.0); // The original RINEX 2.11 file stores the RSS in a tabulated format 1-9. However, it is also valid to store the CN0 using dB-Hz units
                     lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
                     if (lineObs.size() < 80) lineObs += std::string(80 - lineObs.size(), ' ');
                     out << lineObs << std::endl;
@@ -2223,7 +2286,7 @@ void Rinex_Printer::log_rinex_obs(std::ofstream& out, const Gps_Ephemeris& eph,
             line += minutes;
 
             line += std::string(1, ' ');
-            double seconds=fmod(gps_t, 60);
+            double seconds = fmod(gps_t, 60);
             // Add extra 0 if seconds are < 10
             if (seconds < 10)
             {
@@ -2276,11 +2339,34 @@ void Rinex_Printer::log_rinex_obs(std::ofstream& out, const Gps_Ephemeris& eph,
                             lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
                         }
 
+                    // Signal Strength Indicator (SSI)
+                    int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
+
                     // GPS L1 CA PHASE
                     lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
+                    if (lli == 0)
+                        {
+                            lineObs += std::string(1, ' ');
+                        }
+                    else
+                        {
+                            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                        }
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
 
                     // GPS L1 CA DOPPLER
                     lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
+                    if (lli == 0)
+                        {
+                            lineObs += std::string(1, ' ');
+                        }
+                    else
+                        {
+                            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                        }
+
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
 
                     //GPS L1 SIGNAL STRENGTH
                     lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
@@ -2376,10 +2462,35 @@ void Rinex_Printer::log_rinex_obs(std::ofstream& out, const Galileo_Ephemeris& e
                 {
                     lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
                 }
+
+            // Signal Strength Indicator (SSI)
+            int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
+            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
+
             // Galileo E1B PHASE
             lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads / (2 * GALILEO_PI), 3), 14);
+            if (lli == 0)
+                {
+                    lineObs += std::string(1, ' ');
+                }
+            else
+                {
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                }
+            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
+
             // Galileo E1B DOPPLER
             lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
+            if (lli == 0)
+                {
+                    lineObs += std::string(1, ' ');
+                }
+            else
+                {
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                }
+            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
+
             // Galileo E1B SIGNAL STRENGTH
             lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
             if (lineObs.size() < 80) lineObs += std::string(80 - lineObs.size(), ' ');
@@ -2472,11 +2583,33 @@ void Rinex_Printer::log_rinex_obs(std::ofstream& out, const Gps_Ephemeris& gps_e
                     lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
                 }
 
+            // Signal Strength Indicator (SSI)
+            int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
+            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
+
             // PHASE
             lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
+            if (lli == 0)
+                {
+                    lineObs += std::string(1, ' ');
+                }
+            else
+                {
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                }
+            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
 
             // DOPPLER
             lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
+            if (lli == 0)
+                {
+                    lineObs += std::string(1, ' ');
+                }
+            else
+                {
+                    lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<short>(lli), 1);
+                }
+            lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
 
             // SIGNAL STRENGTH
             lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
diff --git a/src/algorithms/acquisition/adapters/CMakeLists.txt b/src/algorithms/acquisition/adapters/CMakeLists.txt
index edbac5b84..781ecd1a5 100644
--- a/src/algorithms/acquisition/adapters/CMakeLists.txt
+++ b/src/algorithms/acquisition/adapters/CMakeLists.txt
@@ -16,37 +16,25 @@
 # along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
 #
 
+
+set(ACQ_ADAPTER_SOURCES
+    gps_l1_ca_pcps_acquisition.cc
+    gps_l1_ca_pcps_multithread_acquisition.cc
+    gps_l1_ca_pcps_assisted_acquisition.cc
+    gps_l1_ca_pcps_acquisition_fine_doppler.cc
+    gps_l1_ca_pcps_tong_acquisition.cc
+    gps_l1_ca_pcps_quicksync_acquisition.cc
+    galileo_e1_pcps_ambiguous_acquisition.cc
+    galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc
+    galileo_e1_pcps_quicksync_ambiguous_acquisition.cc
+    galileo_e1_pcps_tong_ambiguous_acquisition.cc
+    galileo_e1_pcps_8ms_ambiguous_acquisition.cc
+    galileo_e5a_noncoherent_iq_acquisition_caf.cc
+)
+
+
 if(OPENCL_FOUND)
-    set(ACQ_ADAPTER_SOURCES
-         gps_l1_ca_pcps_acquisition.cc
-         gps_l1_ca_pcps_multithread_acquisition.cc
-         gps_l1_ca_pcps_assisted_acquisition.cc
-         gps_l1_ca_pcps_acquisition_fine_doppler.cc
-         gps_l1_ca_pcps_tong_acquisition.cc
-         gps_l1_ca_pcps_quicksync_acquisition.cc
-         gps_l1_ca_pcps_opencl_acquisition.cc
-         galileo_e1_pcps_ambiguous_acquisition.cc
-         galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc
-         galileo_e1_pcps_quicksync_ambiguous_acquisition.cc
-         galileo_e1_pcps_tong_ambiguous_acquisition.cc
-         galileo_e1_pcps_8ms_ambiguous_acquisition.cc
-         galileo_e5a_noncoherent_iq_acquisition_caf.cc
-    )
-else(OPENCL_FOUND)
-    set(ACQ_ADAPTER_SOURCES
-         gps_l1_ca_pcps_acquisition.cc
-         gps_l1_ca_pcps_multithread_acquisition.cc
-         gps_l1_ca_pcps_assisted_acquisition.cc
-         gps_l1_ca_pcps_acquisition_fine_doppler.cc
-         gps_l1_ca_pcps_tong_acquisition.cc
-         gps_l1_ca_pcps_quicksync_acquisition.cc
-         galileo_e1_pcps_ambiguous_acquisition.cc
-         galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc
-         galileo_e1_pcps_quicksync_ambiguous_acquisition.cc
-         galileo_e1_pcps_tong_ambiguous_acquisition.cc
-         galileo_e1_pcps_8ms_ambiguous_acquisition.cc
-         galileo_e5a_noncoherent_iq_acquisition_caf.cc
-    )
+    set(ACQ_ADAPTER_SOURCES ${ACQ_ADAPTER_SOURCES} gps_l1_ca_pcps_opencl_acquisition.cc)
 endif(OPENCL_FOUND)
 
 include_directories(
@@ -60,9 +48,11 @@ include_directories(
      ${GLOG_INCLUDE_DIRS}
      ${GFlags_INCLUDE_DIRS}
      ${GNURADIO_RUNTIME_INCLUDE_DIRS}
+     ${GNURADIO_BLOCKS_INCLUDE_DIRS}
 )
 
 file(GLOB ACQ_ADAPTER_HEADERS "*.h")
 add_library(acq_adapters ${ACQ_ADAPTER_SOURCES} ${ACQ_ADAPTER_HEADERS})
 source_group(Headers FILES ${ACQ_ADAPTER_HEADERS}) 
 target_link_libraries(acq_adapters gnss_sp_libs acq_gr_blocks ${Boost_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES})
+
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc
index 352053c49..2bf588b9d 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc
@@ -267,6 +267,12 @@ GalileoE1PcpsAmbiguousAcquisition::reset()
         }
 }
 
+void
+GalileoE1PcpsAmbiguousAcquisition::set_state(int state)
+{
+        acquisition_cc_->set_state(state);
+}
+
 float GalileoE1PcpsAmbiguousAcquisition::calculate_threshold(float pfa)
 {
 	unsigned int frequency_bins = 0;
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h
index e5192dff3..fb0b098be 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h
@@ -129,6 +129,11 @@ public:
      */
     void reset();
 
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
+
 private:
     ConfigurationInterface* configuration_;
     pcps_acquisition_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc
index 51448423d..43f8b301b 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc
@@ -259,10 +259,18 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::reset()
         }
 }
 
+void
+GalileoE1PcpsCccwsrAmbiguousAcquisition::set_state(int state)
+{
+        acquisition_cc_->set_state(state);
+}
+
+
 
 float GalileoE1PcpsCccwsrAmbiguousAcquisition::calculate_threshold(float pfa)
 {
-    return 0.0;
+    if(pfa){ /* Not implemented*/};
+	return 0.0;
 }
 
 
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h
index dd143b129..0acfd07ee 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h
@@ -126,6 +126,11 @@ public:
      */
     void reset();
 
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
+
 private:
     ConfigurationInterface* configuration_;
     pcps_cccwsr_acquisition_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc
index b2786ff5e..1d524253f 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc
@@ -294,6 +294,16 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::reset()
         }
 }
 
+void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_state(int state)
+{
+    if (item_type_.compare("gr_complex") == 0)
+    {
+        acquisition_cc_->set_state(state);
+    }
+}
+
+
+
 float GalileoE1PcpsQuickSyncAmbiguousAcquisition::calculate_threshold(float pfa)
 {
     unsigned int frequency_bins = 0;
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h
index 14c5ea7f1..ec71e7cb1 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h
@@ -129,6 +129,11 @@ public:
      */
     void reset();
 
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
+
 private:
     ConfigurationInterface* configuration_;
     pcps_quicksync_acquisition_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc
index 523d274ae..20f6f4995 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc
@@ -259,6 +259,12 @@ GalileoE1PcpsTongAmbiguousAcquisition::reset()
         }
 }
 
+void
+GalileoE1PcpsTongAmbiguousAcquisition::set_state(int state)
+{
+        acquisition_cc_->set_state(state);
+}
+
 
 float GalileoE1PcpsTongAmbiguousAcquisition::calculate_threshold(float pfa)
 {
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h
index d95b1e533..16c8b1f37 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h
@@ -129,6 +129,11 @@ public:
      */
     void reset();
 
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
+
 private:
     ConfigurationInterface* configuration_;
     pcps_tong_acquisition_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc
index 7e506005a..740a6d915 100644
--- a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc
+++ b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc
@@ -304,16 +304,23 @@ float GalileoE5aNoncoherentIQAcquisitionCaf::calculate_threshold(float pfa)
     return threshold;
 }
 
+void GalileoE5aNoncoherentIQAcquisitionCaf::set_state(int state)
+{
+        acquisition_cc_->set_state(state);
+}
+
 
 void GalileoE5aNoncoherentIQAcquisitionCaf::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
 }
 
 
 void GalileoE5aNoncoherentIQAcquisitionCaf::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect internally
 }
 
 gr::basic_block_sptr GalileoE5aNoncoherentIQAcquisitionCaf::get_left_block()
diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h
index addc5d937..646c3a522 100644
--- a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h
+++ b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h
@@ -129,6 +129,13 @@ public:
 	  */
 	 void reset();
 
+     /*!
+      * \brief If set to 1, ensures that acquisition starts at the
+      * first available sample.
+      * \param state - int=1 forces start of acquisition
+      */
+	 void set_state(int state);
+
 private:
 	 ConfigurationInterface* configuration_;
 	 galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc
index 012963382..4c3b25974 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc
@@ -60,6 +60,7 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition(
 
     item_type_ = configuration_->property(role + ".item_type",
             default_item_type);
+    //float pfa =  configuration_->property(role + ".pfa", 0.0);
 
     fs_in_ = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000);
     if_ = configuration_->property(role + ".ifreq", 0);
@@ -89,25 +90,36 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition(
 
     code_= new gr_complex[vector_length_];
 
-    if (item_type_.compare("gr_complex") == 0)
-    {
-        item_size_ = sizeof(gr_complex);
-        acquisition_cc_ = pcps_make_acquisition_cc(sampled_ms_, max_dwells_,
-                shift_resolution_, if_, fs_in_, code_length_, code_length_,
-                bit_transition_flag_, queue_, dump_, dump_filename_);
+    // if (item_type_.compare("gr_complex") == 0 )
+    //         {
+    item_size_ = sizeof(gr_complex);
+    acquisition_cc_ = pcps_make_acquisition_cc(sampled_ms_, max_dwells_,
+            shift_resolution_, if_, fs_in_, code_length_, code_length_,
+            bit_transition_flag_, queue_, dump_, dump_filename_);
 
-        stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
+    stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
 
-        DLOG(INFO) << "stream_to_vector(" << stream_to_vector_->unique_id()
-                << ")";
-        DLOG(INFO) << "acquisition(" << acquisition_cc_->unique_id()
-                << ")";
-    }
-    else
-    {
-        LOG(WARNING) << item_type_
-                << " unknown acquisition item type";
-    }
+    DLOG(INFO) << "stream_to_vector(" << stream_to_vector_->unique_id() << ")";
+    DLOG(INFO) << "acquisition(" << acquisition_cc_->unique_id() << ")";
+    //        }
+
+    if (item_type_.compare("cshort") == 0)
+        {
+            cshort_to_float_x2_ = make_cshort_to_float_x2();
+            float_to_complex_ = gr::blocks::float_to_complex::make();
+        }
+
+    if (item_type_.compare("cbyte") == 0)
+        {
+            cbyte_to_float_x2_ = make_complex_byte_to_float_x2();
+            float_to_complex_ = gr::blocks::float_to_complex::make();
+        }
+    //}
+    //else
+    // {
+    //     LOG(WARNING) << item_type_
+    //             << " unknown acquisition item type";
+    // }
 }
 
 
@@ -120,56 +132,56 @@ GpsL1CaPcpsAcquisition::~GpsL1CaPcpsAcquisition()
 void GpsL1CaPcpsAcquisition::set_channel(unsigned int channel)
 {
     channel_ = channel;
-    if (item_type_.compare("gr_complex") == 0)
-    {
-        acquisition_cc_->set_channel(channel_);
-    }
+    //if (item_type_.compare("gr_complex") == 0)
+    //{
+    acquisition_cc_->set_channel(channel_);
+    //}
 }
 
 
 void GpsL1CaPcpsAcquisition::set_threshold(float threshold)
 {
-	float pfa = configuration_->property(role_ + boost::lexical_cast<std::string>(channel_) + ".pfa", 0.0);
+    float pfa = configuration_->property(role_ + boost::lexical_cast<std::string>(channel_) + ".pfa", 0.0);
 
-	if(pfa == 0.0)
+    if(pfa == 0.0)
         {
-                 pfa = configuration_->property(role_+".pfa", 0.0);
+            pfa = configuration_->property(role_+".pfa", 0.0);
+        }
+    if(pfa == 0.0)
+        {
+            threshold_ = threshold;
+        }
+    else
+        {
+            threshold_ = calculate_threshold(pfa);
         }
-	if(pfa == 0.0)
-		{
-			threshold_ = threshold;
-		}
-	else
-		{
-			threshold_ = calculate_threshold(pfa);
-		}
 
-	DLOG(INFO) <<"Channel "<<channel_<<" Threshold = " << threshold_;
+    DLOG(INFO) <<"Channel "<<channel_<<" Threshold = " << threshold_;
 
-    if (item_type_.compare("gr_complex") == 0)
-    {
-        acquisition_cc_->set_threshold(threshold_);
-    }
+   // if (item_type_.compare("gr_complex") == 0)
+    //    {
+            acquisition_cc_->set_threshold(threshold_);
+    //    }
 }
 
 
 void GpsL1CaPcpsAcquisition::set_doppler_max(unsigned int doppler_max)
 {
     doppler_max_ = doppler_max;
-    if (item_type_.compare("gr_complex") == 0)
-    {
-        acquisition_cc_->set_doppler_max(doppler_max_);
-    }
+    //   if (item_type_.compare("gr_complex") == 0)
+    //  {
+    acquisition_cc_->set_doppler_max(doppler_max_);
+    // }
 }
 
 
 void GpsL1CaPcpsAcquisition::set_doppler_step(unsigned int doppler_step)
 {
     doppler_step_ = doppler_step;
-    if (item_type_.compare("gr_complex") == 0)
-        {
-            acquisition_cc_->set_doppler_step(doppler_step_);
-        }
+    //   if (item_type_.compare("gr_complex") == 0)
+    //      {
+    acquisition_cc_->set_doppler_step(doppler_step_);
+    //     }
 
 }
 
@@ -178,33 +190,33 @@ void GpsL1CaPcpsAcquisition::set_channel_queue(
         concurrent_queue<int> *channel_internal_queue)
 {
     channel_internal_queue_ = channel_internal_queue;
-    if (item_type_.compare("gr_complex") == 0)
-        {
-            acquisition_cc_->set_channel_queue(channel_internal_queue_);
-        }
+    //  if (item_type_.compare("gr_complex") == 0)
+    //  {
+    acquisition_cc_->set_channel_queue(channel_internal_queue_);
+    //  }
 }
 
 
 void GpsL1CaPcpsAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro)
 {
     gnss_synchro_ = gnss_synchro;
-    if (item_type_.compare("gr_complex") == 0)
-        {
-            acquisition_cc_->set_gnss_synchro(gnss_synchro_);
-        }
+    // if (item_type_.compare("gr_complex") == 0)
+    // {
+    acquisition_cc_->set_gnss_synchro(gnss_synchro_);
+    // }
 }
 
 
 signed int GpsL1CaPcpsAcquisition::mag()
 {
-    if (item_type_.compare("gr_complex") == 0)
-        {
-            return acquisition_cc_->mag();
-        }
-    else
-        {
-            return 0;
-        }
+    // //    if (item_type_.compare("gr_complex") == 0)
+    //        {
+    return acquisition_cc_->mag();
+    //       }
+    //   else
+    //       {
+    //           return 0;
+    //      }
 }
 
 
@@ -217,33 +229,42 @@ void GpsL1CaPcpsAcquisition::init()
 
 void GpsL1CaPcpsAcquisition::set_local_code()
 {
-    if (item_type_.compare("gr_complex") == 0)
-    {
-        std::complex<float>* code = new std::complex<float>[code_length_];
+    // if (item_type_.compare("gr_complex") == 0)
+    //   {
+    std::complex<float>* code = new std::complex<float>[code_length_];
 
-        gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0);
+    gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0);
 
-        for (unsigned int i = 0; i < sampled_ms_; i++)
-            {
-                memcpy(&(code_[i*code_length_]), code,
-                       sizeof(gr_complex)*code_length_);
-            }
+    for (unsigned int i = 0; i < sampled_ms_; i++)
+        {
+            memcpy(&(code_[i*code_length_]), code,
+                    sizeof(gr_complex)*code_length_);
+        }
 
-        acquisition_cc_->set_local_code(code_);
+    acquisition_cc_->set_local_code(code_);
 
-        delete[] code;
-    }
+    delete[] code;
+    //  }
 }
 
 
 void GpsL1CaPcpsAcquisition::reset()
 {
-    if (item_type_.compare("gr_complex") == 0)
-    {
-        acquisition_cc_->set_active(true);
-    }
+    //  if (item_type_.compare("gr_complex") == 0)
+    //  {
+    acquisition_cc_->set_active(true);
+    //  }
 }
 
+void GpsL1CaPcpsAcquisition::set_state(int state)
+{
+    //  if (item_type_.compare("gr_complex") == 0)
+    //  {
+    acquisition_cc_->set_state(state);
+    //  }
+}
+
+
 
 float GpsL1CaPcpsAcquisition::calculate_threshold(float pfa)
 {
@@ -271,6 +292,24 @@ void GpsL1CaPcpsAcquisition::connect(gr::top_block_sptr top_block)
         {
             top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0);
         }
+    else if (item_type_.compare("cshort") == 0)
+        {
+            top_block->connect(cshort_to_float_x2_, 0, float_to_complex_, 0);
+            top_block->connect(cshort_to_float_x2_, 1, float_to_complex_, 1);
+            top_block->connect(float_to_complex_, 0, stream_to_vector_, 0);
+            top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0);
+        }
+    else if (item_type_.compare("cbyte") == 0)
+        {
+            top_block->connect(cbyte_to_float_x2_, 0, float_to_complex_, 0);
+            top_block->connect(cbyte_to_float_x2_, 1, float_to_complex_, 1);
+            top_block->connect(float_to_complex_, 0, stream_to_vector_, 0);
+            top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0);
+        }
+    else
+        {
+            LOG(WARNING) << item_type_ << " unknown acquisition item type";
+        }
 
 }
 
@@ -278,15 +317,53 @@ void GpsL1CaPcpsAcquisition::connect(gr::top_block_sptr top_block)
 void GpsL1CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block)
 {
     if (item_type_.compare("gr_complex") == 0)
-    {
-        top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0);
-    }
+        {
+            top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0);
+        }
+    else if (item_type_.compare("cshort") == 0)
+        {
+            // Since a short-based acq implementation is not available,
+            // we just convert cshorts to gr_complex
+            top_block->disconnect(cshort_to_float_x2_, 0, float_to_complex_, 0);
+            top_block->disconnect(cshort_to_float_x2_, 1, float_to_complex_, 1);
+            top_block->disconnect(float_to_complex_, 0, stream_to_vector_, 0);
+            top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0);
+        }
+    else if (item_type_.compare("cbyte") == 0)
+        {
+            // Since a byte-based acq implementation is not available,
+            // we just convert cshorts to gr_complex
+            top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0);
+            top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1);
+            top_block->disconnect(float_to_complex_, 0, stream_to_vector_, 0);
+            top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0);
+        }
+    else
+        {
+            LOG(WARNING) << item_type_ << " unknown acquisition item type";
+        }
 }
 
 
 gr::basic_block_sptr GpsL1CaPcpsAcquisition::get_left_block()
 {
-    return stream_to_vector_;
+    if (item_type_.compare("gr_complex") == 0)
+        {
+            return stream_to_vector_;
+        }
+    else if (item_type_.compare("cshort") == 0)
+        {
+            return cshort_to_float_x2_;
+        }
+    else if (item_type_.compare("cbyte") == 0)
+        {
+            return cbyte_to_float_x2_;
+        }
+    else
+        {
+            LOG(WARNING) << item_type_ << " unknown acquisition item type";
+            return nullptr;
+        }
 }
 
 
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h
index 1398bcfea..52665947d 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h
@@ -39,9 +39,12 @@
 #include <string>
 #include <gnuradio/msg_queue.h>
 #include <gnuradio/blocks/stream_to_vector.h>
+#include <gnuradio/blocks/float_to_complex.h>
 #include "gnss_synchro.h"
 #include "acquisition_interface.h"
 #include "pcps_acquisition_cc.h"
+#include "cshort_to_float_x2.h"
+#include "complex_byte_to_float_x2.h"
 
 
 
@@ -134,10 +137,18 @@ public:
      */
     void reset();
 
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
+
 private:
     ConfigurationInterface* configuration_;
     pcps_acquisition_cc_sptr acquisition_cc_;
     gr::blocks::stream_to_vector::sptr stream_to_vector_;
+    gr::blocks::float_to_complex::sptr float_to_complex_;
+    cshort_to_float_x2_sptr cshort_to_float_x2_;
+    complex_byte_to_float_x2_sptr cbyte_to_float_x2_;
     size_t item_size_;
     std::string item_type_;
     unsigned int vector_length_;
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc
index 508eac629..0dfbcbb2f 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc
@@ -166,7 +166,7 @@ void GpsL1CaPcpsAcquisitionFineDoppler::reset()
 
 void GpsL1CaPcpsAcquisitionFineDoppler::connect(boost::shared_ptr<gr::top_block> top_block)
 {
-
+	if(top_block) { /* top_block is not null */};
     //nothing to disconnect, now the tracking uses gr_sync_decimator
 
 }
@@ -174,7 +174,8 @@ void GpsL1CaPcpsAcquisitionFineDoppler::connect(boost::shared_ptr<gr::top_block>
 
 void GpsL1CaPcpsAcquisitionFineDoppler::disconnect(boost::shared_ptr<gr::top_block> top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc
index 7a58692f0..4eff7d287 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc
@@ -163,15 +163,15 @@ void GpsL1CaPcpsAssistedAcquisition::reset()
 
 void GpsL1CaPcpsAssistedAcquisition::connect(gr::top_block_sptr top_block)
 {
-
+	if(top_block) { /* top_block is not null */};
     //nothing to disconnect, now the tracking uses gr_sync_decimator
-
 }
 
 
 void GpsL1CaPcpsAssistedAcquisition::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc
index 095ccc464..eb24b86fe 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc
@@ -276,6 +276,14 @@ void GpsL1CaPcpsQuickSyncAcquisition::reset()
         }
 }
 
+void GpsL1CaPcpsQuickSyncAcquisition::set_state(int state)
+{
+    if (item_type_.compare("gr_complex") == 0)
+        {
+            acquisition_cc_->set_state(state);
+        }
+}
+
 
 float GpsL1CaPcpsQuickSyncAcquisition::calculate_threshold(float pfa)
 {
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h
index 3b2ea34cb..88f1ebe0c 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h
@@ -132,7 +132,10 @@ public:
      */
     void reset();
 
-
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
 private:
     ConfigurationInterface* configuration_;
     pcps_quicksync_acquisition_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc
index c81e264a8..10ffc7c8e 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc
@@ -229,6 +229,14 @@ void GpsL1CaPcpsTongAcquisition::reset()
         }
 }
 
+void GpsL1CaPcpsTongAcquisition::set_state(int state)
+{
+    if (item_type_.compare("gr_complex") == 0)
+    {
+        acquisition_cc_->set_state(state);
+    }
+}
+
 float GpsL1CaPcpsTongAcquisition::calculate_threshold(float pfa)
 {
 	//Calculate the threshold
diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h
index 9515c1973..e4afb6e19 100644
--- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h
+++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h
@@ -127,10 +127,14 @@ public:
 
     /*!
      * \brief Restart acquisition algorithm
-     *///    std::cout << "role " << role_ << std::endl;
-
+     */
     void reset();
 
+    /*!
+     * \brief If state = 1, it forces the block to start acquiring from the first sample
+     */
+    void set_state(int state);
+
 private:
     ConfigurationInterface* configuration_;
     pcps_tong_acquisition_cc_sptr acquisition_cc_;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt b/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt
index 31f0b26d4..5a1d0d5ce 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt
@@ -16,31 +16,21 @@
 # along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
 #
 
+
+set(ACQ_GR_BLOCKS_SOURCES
+    pcps_acquisition_cc.cc
+    pcps_multithread_acquisition_cc.cc
+    pcps_assisted_acquisition_cc.cc
+    pcps_acquisition_fine_doppler_cc.cc
+    pcps_tong_acquisition_cc.cc
+    pcps_cccwsr_acquisition_cc.cc
+    pcps_quicksync_acquisition_cc.cc
+    galileo_pcps_8ms_acquisition_cc.cc
+    galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
+) 
+    
 if(OPENCL_FOUND)
-    set(ACQ_GR_BLOCKS_SOURCES
-            pcps_acquisition_cc.cc
-            pcps_multithread_acquisition_cc.cc
-            pcps_assisted_acquisition_cc.cc
-            pcps_acquisition_fine_doppler_cc.cc
-            pcps_tong_acquisition_cc.cc
-            pcps_cccwsr_acquisition_cc.cc
-            pcps_quicksync_acquisition_cc.cc
-            galileo_pcps_8ms_acquisition_cc.cc
-            galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
-            pcps_opencl_acquisition_cc.cc # Needs OpenCL
-    )
-else(OPENCL_FOUND)
-    set(ACQ_GR_BLOCKS_SOURCES
-            pcps_acquisition_cc.cc
-            pcps_multithread_acquisition_cc.cc
-            pcps_assisted_acquisition_cc.cc
-            pcps_acquisition_fine_doppler_cc.cc
-            pcps_tong_acquisition_cc.cc
-            pcps_cccwsr_acquisition_cc.cc
-            pcps_quicksync_acquisition_cc.cc
-            galileo_pcps_8ms_acquisition_cc.cc
-            galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
-    )
+    set(ACQ_GR_BLOCKS_SOURCES ${ACQ_GR_BLOCKS_SOURCES} pcps_opencl_acquisition_cc.cc)
 endif(OPENCL_FOUND)
 
 include_directories(
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
index 421134c16..3313fb37a 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
@@ -281,6 +281,31 @@ void galileo_e5a_noncoherentIQ_acquisition_caf_cc::init()
 }
 
 
+
+void galileo_e5a_noncoherentIQ_acquisition_caf_cc::set_state(int state)
+{
+    d_state = state;
+    if (d_state == 1)
+        {
+            d_gnss_synchro->Acq_delay_samples = 0.0;
+            d_gnss_synchro->Acq_doppler_hz = 0.0;
+            d_gnss_synchro->Acq_samplestamp_samples = 0;
+            d_well_count = 0;
+            d_mag = 0.0;
+            d_input_power = 0.0;
+            d_test_statistics = 0.0;
+        }
+    else if (d_state == 0)
+        {}
+    else
+        {
+            LOG(ERROR) << "State can only be set to 0 or 1";
+        }
+}
+
+
+
+
 int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h
index a21c7b725..43097fa8e 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h
@@ -203,6 +203,13 @@ public:
          d_active = active;
      }
 
+     /*!
+      * \brief If set to 1, ensures that acquisition starts at the
+      * first available sample.
+      * \param state - int=1 forces start of acquisition
+      */
+     void set_state(int state);
+
      /*!
       * \brief Set acquisition channel unique ID
       * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
index 7b975c7f4..e6dd1e050 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
@@ -166,6 +166,30 @@ void galileo_pcps_8ms_acquisition_cc::init()
         }
 }
 
+
+void galileo_pcps_8ms_acquisition_cc::set_state(int state)
+{
+    d_state = state;
+    if (d_state == 1)
+        {
+			d_gnss_synchro->Acq_delay_samples = 0.0;
+			d_gnss_synchro->Acq_doppler_hz = 0.0;
+			d_gnss_synchro->Acq_samplestamp_samples = 0;
+			d_well_count = 0;
+			d_mag = 0.0;
+			d_input_power = 0.0;
+			d_test_statistics = 0.0;
+        }
+    else if (d_state == 0)
+        {}
+    else
+        {
+            LOG(ERROR) << "State can only be set to 0 or 1";
+        }
+}
+
+
+
 int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h
index 82a05bd86..0867b9a40 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h
@@ -161,6 +161,13 @@ public:
         d_active = active;
     }
 
+    /*!
+     * \brief If set to 1, ensures that acquisition starts at the
+     * first available sample.
+     * \param state - int=1 forces start of acquisition
+     */
+    void set_state(int state);
+
     /*!
      * \brief Set acquisition channel unique ID
      * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
index 0de469342..5dc17a19d 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
@@ -158,6 +158,29 @@ void pcps_acquisition_cc::init()
         }
 }
 
+
+
+void pcps_acquisition_cc::set_state(int state)
+    {
+        d_state = state;
+        if (d_state == 1)
+            {
+                d_gnss_synchro->Acq_delay_samples = 0.0;
+                d_gnss_synchro->Acq_doppler_hz = 0.0;
+                d_gnss_synchro->Acq_samplestamp_samples = 0;
+                d_well_count = 0;
+                d_mag = 0.0;
+                d_input_power = 0.0;
+                d_test_statistics = 0.0;
+            }
+        else if (d_state == 0)
+            {}
+        else
+            {
+                LOG(ERROR) << "State can only be set to 0 or 1";
+            }
+    }
+
 int pcps_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h
index 4b7ab1917..a0f7674e3 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h
@@ -182,6 +182,13 @@ public:
          d_active = active;
      }
 
+     /*!
+      * \brief If set to 1, ensures that acquisition starts at the
+      * first available sample.
+      * \param state - int=1 forces start of acquisition
+      */
+     void set_state(int state);
+
      /*!
       * \brief Set acquisition channel unique ID
       * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h
index 9ff553d7b..c394191d7 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h
@@ -45,8 +45,8 @@
  * -------------------------------------------------------------------------
  */
 
-#ifndef GNSS_SDR_PCPS_acquisition_fine_doppler_cc_H_
-#define GNSS_SDR_PCPS_acquisition_fine_doppler_cc_H_
+#ifndef GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H_
+#define GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H_
 
 #include <fstream>
 #include <queue>
@@ -61,8 +61,10 @@
 #include "gnss_synchro.h"
 
 class pcps_acquisition_fine_doppler_cc;
+
 typedef boost::shared_ptr<pcps_acquisition_fine_doppler_cc>
 pcps_acquisition_fine_doppler_cc_sptr;
+
 pcps_acquisition_fine_doppler_cc_sptr
 pcps_make_acquisition_fine_doppler_cc(int max_dwells, unsigned int sampled_ms,
         int doppler_max, int doppler_min, long freq, long fs_in, int samples_per_ms,
@@ -78,166 +80,166 @@ pcps_make_acquisition_fine_doppler_cc(int max_dwells, unsigned int sampled_ms,
 class pcps_acquisition_fine_doppler_cc: public gr::block
 {
 private:
-	friend pcps_acquisition_fine_doppler_cc_sptr
-	pcps_make_acquisition_fine_doppler_cc(int max_dwells, unsigned int sampled_ms,
-		    int doppler_max, int doppler_min, long freq, long fs_in,
-			int samples_per_ms, boost::shared_ptr<gr::msg_queue> queue, bool dump,
-			std::string dump_filename);
+    friend pcps_acquisition_fine_doppler_cc_sptr
+    pcps_make_acquisition_fine_doppler_cc(int max_dwells, unsigned int sampled_ms,
+            int doppler_max, int doppler_min, long freq, long fs_in,
+            int samples_per_ms, boost::shared_ptr<gr::msg_queue> queue, bool dump,
+            std::string dump_filename);
 
-	pcps_acquisition_fine_doppler_cc(int max_dwells, unsigned int sampled_ms,
-		    int doppler_max, int doppler_min, long freq, long fs_in,
-			int samples_per_ms, boost::shared_ptr<gr::msg_queue> queue, bool dump,
-			std::string dump_filename);
+    pcps_acquisition_fine_doppler_cc(int max_dwells, unsigned int sampled_ms,
+            int doppler_max, int doppler_min, long freq, long fs_in,
+            int samples_per_ms, boost::shared_ptr<gr::msg_queue> queue, bool dump,
+            std::string dump_filename);
 
-	void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift,
-			int doppler_offset);
+    void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift,
+            int doppler_offset);
 
-	int compute_and_accumulate_grid(gr_vector_const_void_star &input_items);
-	int estimate_Doppler(gr_vector_const_void_star &input_items, int available_samples);
-	float estimate_input_power(gr_vector_const_void_star &input_items);
-	double search_maximum();
-	void reset_grid();
-	void update_carrier_wipeoff();
-	void free_grid_memory();
+    int compute_and_accumulate_grid(gr_vector_const_void_star &input_items);
+    int estimate_Doppler(gr_vector_const_void_star &input_items, int available_samples);
+    float estimate_input_power(gr_vector_const_void_star &input_items);
+    double search_maximum();
+    void reset_grid();
+    void update_carrier_wipeoff();
+    void free_grid_memory();
 
-	long d_fs_in;
-	long d_freq;
-	int d_samples_per_ms;
-	int d_max_dwells;
-	unsigned int d_doppler_resolution;
-	int d_gnuradio_forecast_samples;
-	float d_threshold;
-	std::string d_satellite_str;
-	int d_config_doppler_max;
-	int d_config_doppler_min;
+    long d_fs_in;
+    long d_freq;
+    int d_samples_per_ms;
+    int d_max_dwells;
+    unsigned int d_doppler_resolution;
+    int d_gnuradio_forecast_samples;
+    float d_threshold;
+    std::string d_satellite_str;
+    int d_config_doppler_max;
+    int d_config_doppler_min;
 
-	int d_num_doppler_points;
+    int d_num_doppler_points;
     int d_doppler_step;
-	unsigned int d_sampled_ms;
-	unsigned int d_fft_size;
-	unsigned long int d_sample_counter;
-	gr_complex* d_carrier;
-	gr_complex* d_fft_codes;
-	float* d_magnitude;
+    unsigned int d_sampled_ms;
+    unsigned int d_fft_size;
+    unsigned long int d_sample_counter;
+    gr_complex* d_carrier;
+    gr_complex* d_fft_codes;
+    float* d_magnitude;
 
-	float** d_grid_data;
-	gr_complex** d_grid_doppler_wipeoffs;
+    float** d_grid_data;
+    gr_complex** d_grid_doppler_wipeoffs;
 
-	gr::fft::fft_complex* d_fft_if;
-	gr::fft::fft_complex* d_ifft;
-	Gnss_Synchro *d_gnss_synchro;
-	unsigned int d_code_phase;
-	float d_doppler_freq;
-	float d_input_power;
-	float d_test_statistics;
-	boost::shared_ptr<gr::msg_queue> d_queue;
-	concurrent_queue<int> *d_channel_internal_queue;
-	std::ofstream d_dump_file;
-	int d_state;
-	bool d_active;
-	int d_well_count;
-	bool d_dump;
-	unsigned int d_channel;
+    gr::fft::fft_complex* d_fft_if;
+    gr::fft::fft_complex* d_ifft;
+    Gnss_Synchro *d_gnss_synchro;
+    unsigned int d_code_phase;
+    float d_doppler_freq;
+    float d_input_power;
+    float d_test_statistics;
+    boost::shared_ptr<gr::msg_queue> d_queue;
+    concurrent_queue<int> *d_channel_internal_queue;
+    std::ofstream d_dump_file;
+    int d_state;
+    bool d_active;
+    int d_well_count;
+    bool d_dump;
+    unsigned int d_channel;
 
-	std::string d_dump_filename;
+    std::string d_dump_filename;
 
 public:
-	/*!
-	 * \brief Default destructor.
-	 */
-	 ~pcps_acquisition_fine_doppler_cc();
+    /*!
+     * \brief Default destructor.
+     */
+    ~pcps_acquisition_fine_doppler_cc();
 
-	/*!
-	 * \brief Set acquisition/tracking common Gnss_Synchro object pointer
-	 * to exchange synchronization data between acquisition and tracking blocks.
-	 * \param p_gnss_synchro Satellite information shared by the processing blocks.
-	 */
-	 void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
-	 {
-		 d_gnss_synchro = p_gnss_synchro;
-	 }
+    /*!
+     * \brief Set acquisition/tracking common Gnss_Synchro object pointer
+     * to exchange synchronization data between acquisition and tracking blocks.
+     * \param p_gnss_synchro Satellite information shared by the processing blocks.
+     */
+    void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
+    {
+        d_gnss_synchro = p_gnss_synchro;
+    }
 
-	 /*!
-	  * \brief Returns the maximum peak of grid search.
-	  */
-	 unsigned int mag()
-	 {
-		 return d_test_statistics;
-	 }
+    /*!
+     * \brief Returns the maximum peak of grid search.
+     */
+    unsigned int mag()
+    {
+        return d_test_statistics;
+    }
 
-	 /*!
-	  * \brief Initializes acquisition algorithm.
-	  */
-	 void init();
+    /*!
+     * \brief Initializes acquisition algorithm.
+     */
+    void init();
 
-	 /*!
-	  * \brief Sets local code for PCPS acquisition algorithm.
-	  * \param code - Pointer to the PRN code.
-	  */
-	 void set_local_code(std::complex<float> * code);
+    /*!
+     * \brief Sets local code for PCPS acquisition algorithm.
+     * \param code - Pointer to the PRN code.
+     */
+    void set_local_code(std::complex<float> * code);
 
-	 /*!
-	  * \brief Starts acquisition algorithm, turning from standby mode to
-	  * active mode
-	  * \param active - bool that activates/deactivates the block.
-	  */
-	 void set_active(bool active)
-	 {
-		 d_active = active;
-	 }
+    /*!
+     * \brief Starts acquisition algorithm, turning from standby mode to
+     * active mode
+     * \param active - bool that activates/deactivates the block.
+     */
+    void set_active(bool active)
+    {
+        d_active = active;
+    }
 
-	 /*!
-	  * \brief Set acquisition channel unique ID
-	  * \param channel - receiver channel.
-	  */
-	 void set_channel(unsigned int channel)
-	 {
-		 d_channel = channel;
-	 }
+    /*!
+     * \brief Set acquisition channel unique ID
+     * \param channel - receiver channel.
+     */
+    void set_channel(unsigned int channel)
+    {
+        d_channel = channel;
+    }
 
-	 /*!
-	  * \brief Set statistics threshold of PCPS algorithm.
-	  * \param threshold - Threshold for signal detection (check \ref Navitec2012,
-	  * Algorithm 1, for a definition of this threshold).
-	  */
-	 void set_threshold(float threshold)
-	 {
-		 d_threshold = threshold;
-	 }
+    /*!
+     * \brief Set statistics threshold of PCPS algorithm.
+     * \param threshold - Threshold for signal detection (check \ref Navitec2012,
+     * Algorithm 1, for a definition of this threshold).
+     */
+    void set_threshold(float threshold)
+    {
+        d_threshold = threshold;
+    }
 
-	 /*!
-	  * \brief Set maximum Doppler grid search
-	  * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz].
-	  */
-	 void set_doppler_max(unsigned int doppler_max)
-	 {
-		 d_config_doppler_max = doppler_max;
-	 }
+    /*!
+     * \brief Set maximum Doppler grid search
+     * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz].
+     */
+    void set_doppler_max(unsigned int doppler_max)
+    {
+        d_config_doppler_max = doppler_max;
+    }
 
-	 /*!
-	  * \brief Set Doppler steps for the grid search
-	  * \param doppler_step - Frequency bin of the search grid [Hz].
-	  */
-	 void set_doppler_step(unsigned int doppler_step);
+    /*!
+     * \brief Set Doppler steps for the grid search
+     * \param doppler_step - Frequency bin of the search grid [Hz].
+     */
+    void set_doppler_step(unsigned int doppler_step);
 
 
-	 /*!
-	  * \brief Set tracking channel internal queue.
-	  * \param channel_internal_queue - Channel's internal blocks information queue.
-	  */
-	 void set_channel_queue(concurrent_queue<int> *channel_internal_queue)
-	 {
-		 d_channel_internal_queue = channel_internal_queue;
-	 }
+    /*!
+     * \brief Set tracking channel internal queue.
+     * \param channel_internal_queue - Channel's internal blocks information queue.
+     */
+    void set_channel_queue(concurrent_queue<int> *channel_internal_queue)
+    {
+        d_channel_internal_queue = channel_internal_queue;
+    }
 
-	 /*!
-	 * \brief Parallel Code Phase Search Acquisition signal processing.
-	 */
-	 int general_work(int noutput_items, gr_vector_int &ninput_items,
-			 gr_vector_const_void_star &input_items,
-			 gr_vector_void_star &output_items);
+    /*!
+     * \brief Parallel Code Phase Search Acquisition signal processing.
+     */
+    int general_work(int noutput_items, gr_vector_int &ninput_items,
+            gr_vector_const_void_star &input_items,
+            gr_vector_void_star &output_items);
 
-	 void forecast (int noutput_items, gr_vector_int &ninput_items_required);
+    void forecast (int noutput_items, gr_vector_int &ninput_items_required);
 
 };
 
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
index 80b8d1134..583be3d8a 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
@@ -182,6 +182,29 @@ void pcps_cccwsr_acquisition_cc::init()
         }
 }
 
+
+void pcps_cccwsr_acquisition_cc::set_state(int state)
+{
+    d_state = state;
+    if (d_state == 1)
+        {
+            d_gnss_synchro->Acq_delay_samples = 0.0;
+            d_gnss_synchro->Acq_doppler_hz = 0.0;
+            d_gnss_synchro->Acq_samplestamp_samples = 0;
+            d_well_count = 0;
+            d_mag = 0.0;
+            d_input_power = 0.0;
+            d_test_statistics = 0.0;
+        }
+    else if (d_state == 0)
+        {}
+    else
+        {
+            LOG(ERROR) << "State can only be set to 0 or 1";
+        }
+}
+
+
 int pcps_cccwsr_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h
index d863f8df1..3fcf8994a 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h
@@ -172,6 +172,13 @@ public:
          d_active = active;
      }
 
+     /*!
+      * \brief If set to 1, ensures that acquisition starts at the
+      * first available sample.
+      * \param state - int=1 forces start of acquisition
+      */
+     void set_state(int state);
+
      /*!
       * \brief Set acquisition channel unique ID
       * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
index bc2001118..6976ae5e2 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
@@ -299,6 +299,33 @@ void pcps_multithread_acquisition_cc::acquisition_core()
     d_core_working = false;
 }
 
+
+
+void pcps_multithread_acquisition_cc::set_state(int state)
+{
+    d_state = state;
+    if (d_state == 1)
+        {
+            d_gnss_synchro->Acq_delay_samples = 0.0;
+            d_gnss_synchro->Acq_doppler_hz = 0.0;
+            d_gnss_synchro->Acq_samplestamp_samples = 0;
+            d_well_count = 0;
+            d_mag = 0.0;
+            d_input_power = 0.0;
+            d_test_statistics = 0.0;
+            d_in_dwell_count = 0;
+            d_sample_counter_buffer.clear();
+        }
+    else if (d_state == 0)
+        {}
+    else
+        {
+            LOG(ERROR) << "State can only be set to 0 or 1";
+        }
+}
+
+
+
 int pcps_multithread_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.h
index 4f94ffbd5..86261aa25 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.h
@@ -190,6 +190,13 @@ public:
         d_active = active;
     }
 
+    /*!
+     * \brief If set to 1, ensures that acquisition starts at the
+     * first available sample.
+     * \param state - int=1 forces start of acquisition
+     */
+    void set_state(int state);
+
     /*!
      * \brief Set acquisition channel unique ID
      * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
index 0fe0d3f05..f9d92468e 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
@@ -664,6 +664,28 @@ void pcps_opencl_acquisition_cc::acquisition_core_opencl()
 }
 
 
+void pcps_multithread_acquisition_cc::set_state(int state)
+{
+    d_state = state;
+    if (d_state == 1)
+        {
+            d_gnss_synchro->Acq_delay_samples = 0.0;
+            d_gnss_synchro->Acq_doppler_hz = 0.0;
+            d_gnss_synchro->Acq_samplestamp_samples = 0;
+            d_well_count = 0;
+            d_mag = 0.0;
+            d_input_power = 0.0;
+            d_test_statistics = 0.0;
+            d_in_dwell_count = 0;
+            d_sample_counter_buffer.clear();
+        }
+    else if (d_state == 0)
+        {}
+    else
+        {
+            LOG(ERROR) << "State can only be set to 0 or 1";
+        }
+}
 
 int pcps_opencl_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h
index 76ce97d0a..06eb01200 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h
@@ -216,6 +216,13 @@ public:
          d_active = active;
      }
 
+     /*!
+      * \brief If set to 1, ensures that acquisition starts at the
+      * first available sample.
+      * \param state - int=1 forces start of acquisition
+      */
+     void set_state(int state);
+
      /*!
       * \brief Set acquisition channel unique ID
       * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
index 2d0f4bcfb..a600626d6 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
@@ -208,6 +208,28 @@ void pcps_quicksync_acquisition_cc::init()
 }
 
 
+void pcps_quicksync_acquisition_cc::set_state(int state)
+    {
+        d_state = state;
+        if (d_state == 1)
+            {
+                d_gnss_synchro->Acq_delay_samples = 0.0;
+                d_gnss_synchro->Acq_doppler_hz = 0.0;
+                d_gnss_synchro->Acq_samplestamp_samples = 0;
+                d_well_count = 0;
+                d_mag = 0.0;
+                d_input_power = 0.0;
+                d_test_statistics = 0.0;
+                d_active = 1;
+            }
+        else if (d_state == 0)
+            {}
+        else
+            {
+                LOG(ERROR) << "State can only be set to 0 or 1";
+            }
+    }
+
 int pcps_quicksync_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h
index 87554b6c7..88d37f0b1 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h
@@ -202,6 +202,13 @@ public:
         d_active = active;
     }
 
+    /*!
+     * \brief If set to 1, ensures that acquisition starts at the
+     * first available sample.
+     * \param state - int=1 forces start of acquisition
+     */
+    void set_state(int state);
+
     /*!
      * \brief Set acquisition channel unique ID
      * \param channel - receiver channel.
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
index 20f1d4982..49e0152a8 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
@@ -186,6 +186,37 @@ void pcps_tong_acquisition_cc::init()
         }
 }
 
+void pcps_tong_acquisition_cc::set_state(int state)
+{
+    d_state = state;
+    if (d_state == 1)
+        {
+            d_gnss_synchro->Acq_delay_samples = 0.0;
+            d_gnss_synchro->Acq_doppler_hz = 0.0;
+            d_gnss_synchro->Acq_samplestamp_samples = 0;
+            d_well_count = 0;
+            d_well_count = 0;
+            d_tong_count = d_tong_init_val;
+            d_mag = 0.0;
+            d_input_power = 0.0;
+            d_test_statistics = 0.0;
+
+            for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++)
+                {
+                    for (unsigned int i = 0; i < d_fft_size; i++)
+                        {
+                            d_grid_data[doppler_index][i] = 0;
+                        }
+                }
+        }
+    else if (d_state == 0)
+        {}
+    else
+        {
+            LOG(ERROR) << "State can only be set to 0 or 1";
+        }
+}
+
 int pcps_tong_acquisition_cc::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h
index 6b4b3b201..6c738e401 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h
@@ -180,6 +180,13 @@ public:
          d_active = active;
      }
 
+     /*!
+      * \brief If set to 1, ensures that acquisition starts at the
+      * first available sample.
+      * \param state - int=1 forces start of acquisition
+      */
+     void set_state(int state);
+
      /*!
       * \brief Set acquisition channel unique ID
       * \param channel - receiver channel.
diff --git a/src/algorithms/data_type_adapter/adapters/byte_to_short.h b/src/algorithms/data_type_adapter/adapters/byte_to_short.h
index ae40fb2a1..7e19ce235 100644
--- a/src/algorithms/data_type_adapter/adapters/byte_to_short.h
+++ b/src/algorithms/data_type_adapter/adapters/byte_to_short.h
@@ -58,10 +58,10 @@ public:
     {
         return role_;
     }
-    //! Returns "ByteToShort"
+    //! Returns "Byte_To_Short"
     std::string implementation()
     {
-        return "ByteToShort";
+        return "Byte_To_Short";
     }
     size_t item_size()
     {
diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h b/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h
index 366df100d..005fd2b0b 100644
--- a/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h
+++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h
@@ -59,10 +59,10 @@ public:
     {
         return role_;
     }
-    //! Returns "IbyteToCbyte"
+    //! Returns "Ibyte_To_Cbyte"
     std::string implementation()
     {
-        return "IbyteToCbyte";
+        return "Ibyte_To_Cbyte";
     }
     size_t item_size()
     {
diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h b/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h
index 1c5e44f77..ebbc84143 100644
--- a/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h
+++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h
@@ -59,10 +59,10 @@ public:
     {
         return role_;
     }
-    //! Returns "IbyteToComplex"
+    //! Returns "Ibyte_To_Complex"
     std::string implementation()
     {
-        return "IbyteToComplex";
+        return "Ibyte_To_Complex";
     }
     size_t item_size()
     {
diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h
index cb24c8eb4..493d19815 100644
--- a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h
+++ b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h
@@ -58,10 +58,10 @@ public:
     {
         return role_;
     }
-    //! Returns "IshortToComplex"
+    //! Returns "Ishort_To_Complex"
     std::string implementation()
     {
-        return "IshortToComplex";
+        return "Ishort_To_Complex";
     }
     size_t item_size()
     {
diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h b/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h
index 0fb07ef1d..0866adc80 100644
--- a/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h
+++ b/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h
@@ -59,10 +59,10 @@ public:
     {
         return role_;
     }
-    //! Returns "IshortToCshort"
+    //! Returns "Ishort_To_Cshort"
     std::string implementation()
     {
-        return "IshortToCshort";
+        return "Ishort_To_Cshort";
     }
     size_t item_size()
     {
diff --git a/src/algorithms/input_filter/adapters/CMakeLists.txt b/src/algorithms/input_filter/adapters/CMakeLists.txt
index 23c59e4d8..019415c9b 100644
--- a/src/algorithms/input_filter/adapters/CMakeLists.txt
+++ b/src/algorithms/input_filter/adapters/CMakeLists.txt
@@ -27,6 +27,7 @@ include_directories(
      ${CMAKE_SOURCE_DIR}/src/core/system_parameters
      ${CMAKE_SOURCE_DIR}/src/core/interfaces
      ${CMAKE_SOURCE_DIR}/src/algorithms/input_filter/gnuradio_blocks
+     ${CMAKE_SOURCE_DIR}/src/algorithms/libs
      ${GLOG_INCLUDE_DIRS}
      ${GFlags_INCLUDE_DIRS}
      ${GNURADIO_RUNTIME_INCLUDE_DIRS}
@@ -36,5 +37,5 @@ include_directories(
 file(GLOB INPUT_FILTER_ADAPTER_HEADERS "*.h")
 add_library(input_filter_adapters ${INPUT_FILTER_ADAPTER_SOURCES} ${INPUT_FILTER_ADAPTER_HEADERS})
 source_group(Headers FILES ${INPUT_FILTER_ADAPTER_HEADERS})
-add_dependencies(input_filter_adapters glog-${glog_RELEASE})
-target_link_libraries(input_filter_adapters input_filter_gr_blocks ${GNURADIO_RUNTIME_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES} ${GNURADIO_FILTER_LIBRARIES})
+add_dependencies(input_filter_adapters glog-${glog_RELEASE} gnss_sp_libs)
+target_link_libraries(input_filter_adapters input_filter_gr_blocks ${GNURADIO_RUNTIME_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES} ${GNURADIO_FILTER_LIBRARIES} gnss_sp_libs)
diff --git a/src/algorithms/input_filter/adapters/fir_filter.cc b/src/algorithms/input_filter/adapters/fir_filter.cc
index 91a6b7d22..116b1b919 100644
--- a/src/algorithms/input_filter/adapters/fir_filter.cc
+++ b/src/algorithms/input_filter/adapters/fir_filter.cc
@@ -76,6 +76,23 @@ FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role,
                     file_sink_ = gr::blocks::file_sink::make(item_size, dump_filename_.c_str());
                 }
         }
+    else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0)
+            && (output_item_type_.compare("gr_complex") == 0))
+        {
+            item_size = sizeof(gr_complex);
+            cshort_to_float_x2_ = make_cshort_to_float_x2();
+            fir_filter_fff_1_ = gr::filter::fir_filter_fff::make(1, taps_);
+            fir_filter_fff_2_ = gr::filter::fir_filter_fff::make(1, taps_);
+            DLOG(INFO) << "I input_filter(" << fir_filter_fff_1_->unique_id() << ")";
+            DLOG(INFO) << "Q input_filter(" << fir_filter_fff_2_->unique_id() << ")";
+            float_to_complex_ = gr::blocks::float_to_complex::make();
+            if (dump_)
+                {
+                    DLOG(INFO) << "Dumping output into file " << dump_filename_;
+                    file_sink_ = gr::blocks::file_sink::make(item_size, dump_filename_.c_str());
+                }
+        }
+
     else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0)
             && (output_item_type_.compare("gr_complex") == 0))
         {
@@ -169,7 +186,6 @@ void FirFilter::connect(gr::top_block_sptr top_block)
                 {
                     top_block->connect(float_to_complex_, 0, file_sink_, 0);
                 }
-
         }
     else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0)
             && (output_item_type_.compare("cbyte") == 0))
@@ -185,6 +201,18 @@ void FirFilter::connect(gr::top_block_sptr top_block)
                     top_block->connect(char_x2_cbyte_, 0, file_sink_, 0);
                 }
         }
+    else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0)
+    		&& (output_item_type_.compare("gr_complex") == 0))
+        {
+            top_block->connect(cshort_to_float_x2_, 0, fir_filter_fff_1_, 0);
+    	    top_block->connect(cshort_to_float_x2_, 1, fir_filter_fff_2_, 0);
+    	    top_block->connect(fir_filter_fff_1_, 0, float_to_complex_, 0);
+    	    top_block->connect(fir_filter_fff_2_, 0, float_to_complex_, 1);
+    	    if (dump_)
+    	        {
+    		        top_block->connect(float_to_complex_, 0, file_sink_, 0);
+    	        }
+        }
     else
         {
             LOG(ERROR) << " Unknown item type conversion";
@@ -228,7 +256,6 @@ void FirFilter::disconnect(gr::top_block_sptr top_block)
                 {
                     top_block->disconnect(short_x2_to_cshort_, 0, file_sink_, 0);
                 }
-
         }
     else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0)
             && (output_item_type_.compare("cbyte") == 0))
@@ -244,6 +271,18 @@ void FirFilter::disconnect(gr::top_block_sptr top_block)
                     top_block->disconnect(char_x2_cbyte_, 0, file_sink_, 0);
                 }
         }
+    else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0)
+    		&& (output_item_type_.compare("gr_complex") == 0))
+        {
+            top_block->disconnect(cshort_to_float_x2_, 0, fir_filter_fff_1_, 0);
+    	    top_block->disconnect(cshort_to_float_x2_, 1, fir_filter_fff_2_, 0);
+    	    top_block->disconnect(fir_filter_fff_1_, 0, float_to_complex_, 0);
+    	    top_block->disconnect(fir_filter_fff_2_, 0, float_to_complex_, 1);
+    	    if (dump_)
+    	        {
+    		        top_block->disconnect(float_to_complex_, 0, file_sink_, 0);
+    	        }
+        }
     else
         {
             LOG(ERROR) << " Unknown item type conversion";
@@ -274,6 +313,11 @@ gr::basic_block_sptr FirFilter::get_left_block()
         {
             return cbyte_to_float_x2_;
         }
+    else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0)
+    		&& (output_item_type_.compare("gr_complex") == 0))
+        {
+            return cshort_to_float_x2_;
+        }
     else
         {
             return nullptr;
@@ -305,6 +349,11 @@ gr::basic_block_sptr FirFilter::get_right_block()
         {
             return char_x2_cbyte_;
         }
+    else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0)
+      		&& (output_item_type_.compare("gr_complex") == 0))
+        {
+            return float_to_complex_;
+        }
     else
         {
             return nullptr;
diff --git a/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt b/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt
index 68d32cb0d..050425bcd 100644
--- a/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt
@@ -19,11 +19,6 @@
 
 set(INPUT_FILTER_GR_BLOCKS_SOURCES 
      beamformer.cc
-     complex_byte_to_float_x2.cc
-     byte_x2_to_complex_byte.cc
-     cshort_to_float_x2.cc
-     short_x2_to_cshort.cc
-     complex_float_to_complex_byte.cc
 )
 
 include_directories(
@@ -32,14 +27,9 @@ include_directories(
      ${GFlags_INCLUDE_DIRS}
      ${GNURADIO_RUNTIME_INCLUDE_DIRS}
      ${GNURADIO_BLOCKS_INCLUDE_DIRS}
-     ${VOLK_INCLUDE_DIRS}
-     ${VOLK_GNSSSDR_INCLUDE_DIRS}
 )
 
 file(GLOB INPUT_FILTER_GR_BLOCKS_HEADERS "*.h")
 add_library(input_filter_gr_blocks ${INPUT_FILTER_GR_BLOCKS_SOURCES} ${INPUT_FILTER_GR_BLOCKS_HEADERS})
 source_group(Headers FILES ${INPUT_FILTER_GR_BLOCKS_HEADERS})
-target_link_libraries(input_filter_gr_blocks ${GNURADIO_RUNTIME_LIBRARIES} ${VOLK_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES})
-if(NOT VOLK_GNSSSDR_FOUND)
-    add_dependencies(input_filter_gr_blocks volk_gnsssdr_module)
-endif(NOT VOLK_GNSSSDR_FOUND)
\ No newline at end of file
+target_link_libraries(input_filter_gr_blocks ${GNURADIO_RUNTIME_LIBRARIES})
diff --git a/src/algorithms/libs/CMakeLists.txt b/src/algorithms/libs/CMakeLists.txt
index 752bd84d4..90ce61d97 100644
--- a/src/algorithms/libs/CMakeLists.txt
+++ b/src/algorithms/libs/CMakeLists.txt
@@ -16,28 +16,28 @@
 # along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
 #
 
+
+set(GNSS_SPLIBS_SOURCES
+    galileo_e1_signal_processing.cc
+    gnss_sdr_valve.cc
+    gnss_signal_processing.cc
+    gps_sdr_signal_processing.cc
+    nco_lib.cc
+    pass_through.cc
+    galileo_e5_signal_processing.cc
+    complex_byte_to_float_x2.cc
+    byte_x2_to_complex_byte.cc
+    cshort_to_float_x2.cc
+    short_x2_to_cshort.cc
+    complex_float_to_complex_byte.cc
+)
+    
+    
 if(OPENCL_FOUND)
-    set(GNSS_SPLIBS_SOURCES
-         galileo_e1_signal_processing.cc
-         gnss_sdr_valve.cc
-         gnss_signal_processing.cc
-         gps_sdr_signal_processing.cc
-         nco_lib.cc
-         pass_through.cc
+    set(GNSS_SPLIBS_SOURCES ${GNSS_SPLIBS_SOURCES}
          fft_execute.cc # Needs OpenCL
          fft_setup.cc # Needs OpenCL
          fft_kernelstring.cc # Needs OpenCL
-         galileo_e5_signal_processing.cc
-    )
-else(OPENCL_FOUND)
-    set(GNSS_SPLIBS_SOURCES
-         galileo_e1_signal_processing.cc
-         gnss_sdr_valve.cc
-         gnss_signal_processing.cc
-         gps_sdr_signal_processing.cc
-         nco_lib.cc
-         pass_through.cc
-         galileo_e5_signal_processing.cc
     )
 endif(OPENCL_FOUND)
 
@@ -50,7 +50,9 @@ include_directories(
      ${GLOG_INCLUDE_DIRS}
      ${GFlags_INCLUDE_DIRS}
      ${GNURADIO_RUNTIME_INCLUDE_DIRS}
+     ${GNURADIO_BLOCKS_INCLUDE_DIRS}
      ${VOLK_INCLUDE_DIRS}
+     ${VOLK_GNSSSDR_INCLUDE_DIRS}
 )
 
 if(OPENCL_FOUND)
@@ -66,10 +68,16 @@ file(GLOB GNSS_SPLIBS_HEADERS "*.h")
 add_library(gnss_sp_libs ${GNSS_SPLIBS_SOURCES} ${GNSS_SPLIBS_HEADERS})
 source_group(Headers FILES ${GNSS_SPLIBS_HEADERS})
 
-target_link_libraries(gnss_sp_libs ${GNURADIO_RUNTIME_LIBRARIES} 
+target_link_libraries(gnss_sp_libs ${GNURADIO_RUNTIME_LIBRARIES}
+                                   ${VOLK_LIBRARIES} 
+                                   ${VOLK_GNSSSDR_LIBRARIES} 
                                    ${GNURADIO_BLOCKS_LIBRARIES} 
                                    ${GNURADIO_FFT_LIBRARIES} 
                                    ${GNURADIO_FILTER_LIBRARIES} 
                                    ${OPT_LIBRARIES} 
                                    gnss_rx
 )
+
+if(NOT VOLK_GNSSSDR_FOUND)
+    add_dependencies(gnss_sp_libs volk_gnsssdr_module)
+endif(NOT VOLK_GNSSSDR_FOUND)
diff --git a/src/algorithms/input_filter/gnuradio_blocks/byte_x2_to_complex_byte.cc b/src/algorithms/libs/byte_x2_to_complex_byte.cc
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/byte_x2_to_complex_byte.cc
rename to src/algorithms/libs/byte_x2_to_complex_byte.cc
diff --git a/src/algorithms/input_filter/gnuradio_blocks/byte_x2_to_complex_byte.h b/src/algorithms/libs/byte_x2_to_complex_byte.h
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/byte_x2_to_complex_byte.h
rename to src/algorithms/libs/byte_x2_to_complex_byte.h
diff --git a/src/algorithms/input_filter/gnuradio_blocks/complex_byte_to_float_x2.cc b/src/algorithms/libs/complex_byte_to_float_x2.cc
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/complex_byte_to_float_x2.cc
rename to src/algorithms/libs/complex_byte_to_float_x2.cc
diff --git a/src/algorithms/input_filter/gnuradio_blocks/complex_byte_to_float_x2.h b/src/algorithms/libs/complex_byte_to_float_x2.h
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/complex_byte_to_float_x2.h
rename to src/algorithms/libs/complex_byte_to_float_x2.h
diff --git a/src/algorithms/input_filter/gnuradio_blocks/complex_float_to_complex_byte.cc b/src/algorithms/libs/complex_float_to_complex_byte.cc
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/complex_float_to_complex_byte.cc
rename to src/algorithms/libs/complex_float_to_complex_byte.cc
diff --git a/src/algorithms/input_filter/gnuradio_blocks/complex_float_to_complex_byte.h b/src/algorithms/libs/complex_float_to_complex_byte.h
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/complex_float_to_complex_byte.h
rename to src/algorithms/libs/complex_float_to_complex_byte.h
diff --git a/src/algorithms/input_filter/gnuradio_blocks/cshort_to_float_x2.cc b/src/algorithms/libs/cshort_to_float_x2.cc
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/cshort_to_float_x2.cc
rename to src/algorithms/libs/cshort_to_float_x2.cc
diff --git a/src/algorithms/input_filter/gnuradio_blocks/cshort_to_float_x2.h b/src/algorithms/libs/cshort_to_float_x2.h
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/cshort_to_float_x2.h
rename to src/algorithms/libs/cshort_to_float_x2.h
diff --git a/src/algorithms/libs/pass_through.cc b/src/algorithms/libs/pass_through.cc
index 8b30c0752..20b756c44 100644
--- a/src/algorithms/libs/pass_through.cc
+++ b/src/algorithms/libs/pass_through.cc
@@ -47,8 +47,18 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro
         out_streams_(out_streams)
 {
     std::string default_item_type = "gr_complex";
-    item_type_ = configuration->property(role + ".item_type", default_item_type);
+    std::string input_type = configuration->property(role + ".input_item_type", default_item_type);
+    std::string output_type = configuration->property(role + ".output_item_type", default_item_type);
+    if(input_type.compare(output_type) != 0)
+        {
+            LOG(WARNING) << "input_item_type and output_item_type are different in a Pass_Through implementation! Taking "
+                         << input_type
+                         << ", but item_size will supersede it.";
+        }
+
+    item_type_ = configuration->property(role + ".item_type", input_type);
     vector_size_ = configuration->property(role + ".vector_size", 1);
+
     if(item_type_.compare("float") == 0)
         {
             item_size_ = sizeof(float);
@@ -61,6 +71,10 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro
         {
             item_size_ = sizeof(int16_t);
         }
+    else if(item_type_.compare("ishort") == 0)
+        {
+            item_size_ = sizeof(int16_t);
+        }
     else if(item_type_.compare("cshort") == 0)
         {
             item_size_ = sizeof(lv_16sc_t);
@@ -69,6 +83,10 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro
         {
             item_size_ = sizeof(int8_t);
         }
+    else if(item_type_.compare("ibyte") == 0)
+        {
+            item_size_ = sizeof(int8_t);
+        }
     else if(item_type_.compare("cbyte") == 0)
         {
             item_size_ = sizeof(lv_8sc_t);
@@ -91,14 +109,16 @@ Pass_Through::~Pass_Through()
 
 void Pass_Through::connect(gr::top_block_sptr top_block)
 {
-    DLOG(INFO) << "nothing to connect internally";
+	if(top_block) { /* top_block is not null */};
+	DLOG(INFO) << "nothing to connect internally";
 }
 
 
 
 void Pass_Through::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/input_filter/gnuradio_blocks/short_x2_to_cshort.cc b/src/algorithms/libs/short_x2_to_cshort.cc
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/short_x2_to_cshort.cc
rename to src/algorithms/libs/short_x2_to_cshort.cc
diff --git a/src/algorithms/input_filter/gnuradio_blocks/short_x2_to_cshort.h b/src/algorithms/libs/short_x2_to_cshort.h
similarity index 100%
rename from src/algorithms/input_filter/gnuradio_blocks/short_x2_to_cshort.h
rename to src/algorithms/libs/short_x2_to_cshort.h
diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/__init__.pyc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/__init__.pyc
deleted file mode 100644
index bb525bb1a..000000000
Binary files a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/__init__.pyc and /dev/null differ
diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/cfg.pyc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/cfg.pyc
deleted file mode 100644
index f3688fabf..000000000
Binary files a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/cfg.pyc and /dev/null differ
diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/volk_gnsssdr_modtool_generate.pyc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/volk_gnsssdr_modtool_generate.pyc
deleted file mode 100644
index 67cee0681..000000000
Binary files a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/python/volk_gnsssdr_modtool/volk_gnsssdr_modtool_generate.pyc and /dev/null differ
diff --git a/src/algorithms/observables/adapters/galileo_e1_observables.cc b/src/algorithms/observables/adapters/galileo_e1_observables.cc
index 31a9b3c47..602c1afc3 100644
--- a/src/algorithms/observables/adapters/galileo_e1_observables.cc
+++ b/src/algorithms/observables/adapters/galileo_e1_observables.cc
@@ -72,7 +72,8 @@ GalileoE1Observables::~GalileoE1Observables()
 
 void GalileoE1Observables::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
@@ -80,7 +81,8 @@ void GalileoE1Observables::connect(gr::top_block_sptr top_block)
 
 void GalileoE1Observables::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/observables/adapters/gps_l1_ca_observables.cc b/src/algorithms/observables/adapters/gps_l1_ca_observables.cc
index 65f8d20ea..5464799fd 100644
--- a/src/algorithms/observables/adapters/gps_l1_ca_observables.cc
+++ b/src/algorithms/observables/adapters/gps_l1_ca_observables.cc
@@ -72,7 +72,8 @@ GpsL1CaObservables::~GpsL1CaObservables()
 
 void GpsL1CaObservables::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+    if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
@@ -80,7 +81,8 @@ void GpsL1CaObservables::connect(gr::top_block_sptr top_block)
 
 void GpsL1CaObservables::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/observables/adapters/hybrid_observables.cc b/src/algorithms/observables/adapters/hybrid_observables.cc
index f4511dd48..1eb677a5c 100644
--- a/src/algorithms/observables/adapters/hybrid_observables.cc
+++ b/src/algorithms/observables/adapters/hybrid_observables.cc
@@ -72,7 +72,8 @@ HybridObservables::~HybridObservables()
 
 void HybridObservables::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
@@ -80,7 +81,8 @@ void HybridObservables::connect(gr::top_block_sptr top_block)
 
 void HybridObservables::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/output_filter/adapters/file_output_filter.cc b/src/algorithms/output_filter/adapters/file_output_filter.cc
index 40445095d..86cde40f7 100644
--- a/src/algorithms/output_filter/adapters/file_output_filter.cc
+++ b/src/algorithms/output_filter/adapters/file_output_filter.cc
@@ -78,13 +78,15 @@ FileOutputFilter::~FileOutputFilter()
 
 void FileOutputFilter::connect(gr::top_block_sptr top_block)
 {
-    DLOG(INFO) << "nothing to connect internally";
+	if(top_block) { /* top_block is not null */};
+	DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void FileOutputFilter::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect internally
 }
 
 
diff --git a/src/algorithms/output_filter/adapters/null_sink_output_filter.cc b/src/algorithms/output_filter/adapters/null_sink_output_filter.cc
index d1b6f352d..51263baaf 100644
--- a/src/algorithms/output_filter/adapters/null_sink_output_filter.cc
+++ b/src/algorithms/output_filter/adapters/null_sink_output_filter.cc
@@ -76,14 +76,16 @@ NullSinkOutputFilter::~NullSinkOutputFilter()
 
 void NullSinkOutputFilter::connect(gr::top_block_sptr top_block)
 {
-    DLOG(INFO) << "nothing to connect internally";
+	if(top_block) { /* top_block is not null */};
+	DLOG(INFO) << "nothing to connect internally";
 }
 
 
 
 void NullSinkOutputFilter::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect
 }
 
 
diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc
index 6581db9ec..90192a1c9 100644
--- a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc
+++ b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc
@@ -93,14 +93,16 @@ void GalileoE1BTelemetryDecoder::set_satellite(Gnss_Satellite satellite)
 
 void GalileoE1BTelemetryDecoder::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void GalileoE1BTelemetryDecoder::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc
index 29269ebb7..4f1f55af5 100644
--- a/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc
+++ b/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc
@@ -99,14 +99,16 @@ void GalileoE5aTelemetryDecoder::set_satellite(Gnss_Satellite satellite)
 
 void GalileoE5aTelemetryDecoder::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void GalileoE5aTelemetryDecoder::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc
index 83fe57b50..e27ad1940 100644
--- a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc
+++ b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc
@@ -97,14 +97,16 @@ void GpsL1CaTelemetryDecoder::set_satellite(Gnss_Satellite satellite)
 
 void GpsL1CaTelemetryDecoder::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void GpsL1CaTelemetryDecoder::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc
index d9229afcd..aa883047a 100644
--- a/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc
+++ b/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc
@@ -92,14 +92,16 @@ void SbasL1TelemetryDecoder::set_satellite(Gnss_Satellite satellite)
 
 void SbasL1TelemetryDecoder::connect(gr::top_block_sptr top_block)
 {
-    // Nothing to connect internally
+	if(top_block) { /* top_block is not null */};
+	// Nothing to connect internally
     DLOG(INFO) << "nothing to connect internally";
 }
 
 
 void SbasL1TelemetryDecoder::disconnect(gr::top_block_sptr top_block)
 {
-    // Nothing to disconnect
+	if(top_block) { /* top_block is not null */};
+	// Nothing to disconnect
 }
 
 
diff --git a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc
index a8e86cf2f..b965386eb 100755
--- a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc
+++ b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc
@@ -138,12 +138,14 @@ void GalileoE1DllPllVemlTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
 
 void GalileoE1DllPllVemlTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GalileoE1DllPllVemlTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GalileoE1DllPllVemlTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc
index f1d9a0628..fc9361c89 100644
--- a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc
+++ b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc
@@ -141,12 +141,14 @@ void GalileoE1TcpConnectorTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchr
 
 void GalileoE1TcpConnectorTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GalileoE1TcpConnectorTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GalileoE1TcpConnectorTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc
index 2d84969d9..a094521b1 100644
--- a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc
+++ b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc
@@ -144,12 +144,14 @@ void GalileoE5aDllPllTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
 
 void GalileoE5aDllPllTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GalileoE5aDllPllTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GalileoE5aDllPllTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/galileo_volk_e1_dll_pll_veml_tracking.cc b/src/algorithms/tracking/adapters/galileo_volk_e1_dll_pll_veml_tracking.cc
index 95332d3db..48794165a 100644
--- a/src/algorithms/tracking/adapters/galileo_volk_e1_dll_pll_veml_tracking.cc
+++ b/src/algorithms/tracking/adapters/galileo_volk_e1_dll_pll_veml_tracking.cc
@@ -138,12 +138,14 @@ void GalileoVolkE1DllPllVemlTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_sync
 
 void GalileoVolkE1DllPllVemlTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GalileoVolkE1DllPllVemlTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GalileoVolkE1DllPllVemlTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc
index 528235b5b..0f7ff61f6 100644
--- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc
+++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc
@@ -138,12 +138,14 @@ void GpsL1CaDllFllPllTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
 
 void GpsL1CaDllFllPllTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GpsL1CaDllFllPllTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GpsL1CaDllFllPllTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.cc
index 3226e4a7b..ad46b5b34 100644
--- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.cc
+++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.cc
@@ -134,12 +134,14 @@ void GpsL1CaDllPllOptimTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
 
 void GpsL1CaDllPllOptimTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GpsL1CaDllPllOptimTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GpsL1CaDllPllOptimTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc
index 09ed89051..0613e9ad8 100644
--- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc
+++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc
@@ -134,12 +134,14 @@ void GpsL1CaDllPllTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
 
 void GpsL1CaDllPllTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GpsL1CaDllPllTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GpsL1CaDllPllTracking::get_left_block()
diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc
index e1e8e7fa4..2da95a636 100644
--- a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc
+++ b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc
@@ -135,12 +135,14 @@ void GpsL1CaTcpConnectorTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
 
 void GpsL1CaTcpConnectorTracking::connect(gr::top_block_sptr top_block)
 {
-    //nothing to connect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to connect, now the tracking uses gr_sync_decimator
 }
 
 void GpsL1CaTcpConnectorTracking::disconnect(gr::top_block_sptr top_block)
 {
-    //nothing to disconnect, now the tracking uses gr_sync_decimator
+	if(top_block) { /* top_block is not null */};
+	//nothing to disconnect, now the tracking uses gr_sync_decimator
 }
 
 gr::basic_block_sptr GpsL1CaTcpConnectorTracking::get_left_block()
diff --git a/src/core/interfaces/gnss_block_interface.h b/src/core/interfaces/gnss_block_interface.h
index 78b408fba..bb45902c1 100644
--- a/src/core/interfaces/gnss_block_interface.h
+++ b/src/core/interfaces/gnss_block_interface.h
@@ -37,6 +37,7 @@
 #ifndef GNSS_SDR_GNSS_BLOCK_INTERFACE_H_
 #define GNSS_SDR_GNSS_BLOCK_INTERFACE_H_
 
+#include <cassert>
 #include <string>
 #include <gnuradio/top_block.h>
 
@@ -51,35 +52,29 @@
 class GNSSBlockInterface
 {
 public:
-    virtual ~GNSSBlockInterface()
-    {}
-    virtual std::string role() = 0;
-    virtual std::string implementation() = 0;
-    virtual size_t item_size() = 0;
-    virtual void connect(gr::top_block_sptr top_block) = 0;
-    virtual void disconnect(gr::top_block_sptr top_block) = 0;
+	virtual ~GNSSBlockInterface()
+	{}
+	virtual std::string role() = 0;
+	virtual std::string implementation() = 0;
+	virtual size_t item_size() = 0;
+	virtual void connect(gr::top_block_sptr top_block) = 0;
+	virtual void disconnect(gr::top_block_sptr top_block) = 0;
 
-    virtual gr::basic_block_sptr get_left_block() = 0;
-    virtual gr::basic_block_sptr get_right_block() = 0;
+	virtual gr::basic_block_sptr get_left_block() = 0;
+	virtual gr::basic_block_sptr get_right_block() = 0;
 
-    virtual gr::basic_block_sptr get_left_block(int RF_channel)
-    {
-    	if (RF_channel==0) // avoid unused param warning
-    	{
-    		return NULL; // added to support raw array access (non pure virtual to allow left unimplemented)= 0;
-    	}else{
-    		return NULL; // added to support raw array access (non pure virtual to allow left unimplemented)= 0;
-    	}
-    }
-    virtual gr::basic_block_sptr get_right_block(int RF_channel)
-    {
-    	if (RF_channel==0) // avoid unused param warning
-    	{
-    		return NULL; // added to support raw array access (non pure virtual to allow left unimplemented)= 0;
-    	}else{
-    		return NULL; // added to support raw array access (non pure virtual to allow left unimplemented)= 0;
-    	}
-    }
+	virtual gr::basic_block_sptr get_left_block(int RF_channel)
+	{
+		assert(RF_channel >= 0);
+		if (RF_channel == 0){}; // avoid unused param warning
+		return NULL; // added to support raw array access (non pure virtual to allow left unimplemented)= 0;
+	}
+	virtual gr::basic_block_sptr get_right_block(int RF_channel)
+	{
+		assert(RF_channel >= 0);
+		if (RF_channel == 0){};  // avoid unused param warning
+		return NULL; // added to support raw array access (non pure virtual to allow left unimplemented)= 0;
+	}
 };
 
 #endif /*GNSS_SDR_GNSS_BLOCK_INTERFACE_H_*/
diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc
index 4acdca073..122e435b2 100644
--- a/src/core/receiver/gnss_block_factory.cc
+++ b/src/core/receiver/gnss_block_factory.cc
@@ -128,11 +128,11 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetSignalSource(
         std::shared_ptr<ConfigurationInterface> configuration, boost::shared_ptr<gr::msg_queue> queue, int ID)
 {
     std::string default_implementation = "File_Signal_Source";
-    std::string role="SignalSource";//backwards compatibility for old conf files
-    if (ID!=-1)
-    {
-    	role="SignalSource"+ boost::lexical_cast<std::string>(ID);
-    }
+    std::string role = "SignalSource"; //backwards compatibility for old conf files
+    if (ID != -1)
+        {
+            role = "SignalSource" + boost::lexical_cast<std::string>(ID);
+        }
     std::string implementation = configuration->property(role + ".implementation", default_implementation);
     LOG(INFO) << "Getting SignalSource with implementation " << implementation;
     return GetBlock(configuration, role, implementation, 0, 1, queue);
@@ -145,21 +145,21 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetSignalConditioner(
 {
     std::string default_implementation = "Pass_Through";
     //backwards compatibility for old conf files
-	std::string role_conditioner="SignalConditioner" ;
-	std::string role_datatypeadapter="DataTypeAdapter";
-	std::string role_inputfilter="InputFilter";
-	std::string role_resampler="Resampler";
+    std::string role_conditioner = "SignalConditioner" ;
+    std::string role_datatypeadapter = "DataTypeAdapter";
+    std::string role_inputfilter = "InputFilter";
+    std::string role_resampler = "Resampler";
 
-    if (ID!=-1)
-    {
-		role_conditioner="SignalConditioner" + boost::lexical_cast<std::string>(ID);
-		role_datatypeadapter="DataTypeAdapter" + boost::lexical_cast<std::string>(ID);
-		role_inputfilter="InputFilter" + boost::lexical_cast<std::string>(ID);
-		role_resampler="Resampler" + boost::lexical_cast<std::string>(ID);
-    }
+    if (ID != -1)
+        {
+            role_conditioner = "SignalConditioner" + boost::lexical_cast<std::string>(ID);
+            role_datatypeadapter = "DataTypeAdapter" + boost::lexical_cast<std::string>(ID);
+            role_inputfilter = "InputFilter" + boost::lexical_cast<std::string>(ID);
+            role_resampler = "Resampler" + boost::lexical_cast<std::string>(ID);
+        }
 
     std::string signal_conditioner = configuration->property(
-    		role_conditioner+".implementation", default_implementation);
+            role_conditioner + ".implementation", default_implementation);
 
     std::string data_type_adapter;
     std::string input_filter;
@@ -173,11 +173,11 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetSignalConditioner(
     else
         {
             data_type_adapter = configuration->property(
-            		role_datatypeadapter + ".implementation", default_implementation);
+                    role_datatypeadapter + ".implementation", default_implementation);
             input_filter = configuration->property(
-            		role_inputfilter + ".implementation", default_implementation);
+                    role_inputfilter + ".implementation", default_implementation);
             resampler = configuration->property(
-            		role_resampler + ".implementation", default_implementation);
+                    role_resampler + ".implementation", default_implementation);
         }
 
     LOG(INFO) << "Getting SignalConditioner with DataTypeAdapter implementation: "
@@ -189,7 +189,7 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetSignalConditioner(
         {
             //instantiate the array version
             std::unique_ptr<GNSSBlockInterface> conditioner_(new ArraySignalConditioner(configuration.get(), GetBlock(configuration,
-            		role_datatypeadapter, data_type_adapter, 1, 1, queue).release(), GetBlock(
+                    role_datatypeadapter, data_type_adapter, 1, 1, queue).release(), GetBlock(
                             configuration,role_inputfilter, input_filter, 1, 1, queue).release(),
                             GetBlock(configuration,role_resampler, resampler, 1, 1, queue).release(),
                             role_conditioner, "Signal_Conditioner", queue));
@@ -199,7 +199,7 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetSignalConditioner(
         {
             //single-antenna version
             std::unique_ptr<GNSSBlockInterface> conditioner_(new SignalConditioner(configuration.get(), GetBlock(configuration,
-            		role_datatypeadapter, data_type_adapter, 1, 1, queue).release(), GetBlock(
+                    role_datatypeadapter, data_type_adapter, 1, 1, queue).release(), GetBlock(
                             configuration,role_inputfilter, input_filter, 1, 1, queue).release(),
                             GetBlock(configuration,role_resampler, resampler, 1, 1, queue).release(),
                             role_conditioner, "Signal_Conditioner", queue));
diff --git a/src/core/receiver/gnss_block_factory.h b/src/core/receiver/gnss_block_factory.h
index dcc797415..7f6807663 100644
--- a/src/core/receiver/gnss_block_factory.h
+++ b/src/core/receiver/gnss_block_factory.h
@@ -57,10 +57,10 @@ public:
     GNSSBlockFactory();
     virtual ~GNSSBlockFactory();
     std::unique_ptr<GNSSBlockInterface> GetSignalSource(std::shared_ptr<ConfigurationInterface> configuration,
-            boost::shared_ptr<gr::msg_queue> queue, int ID=-1);
+            boost::shared_ptr<gr::msg_queue> queue, int ID = -1);
 
     std::unique_ptr<GNSSBlockInterface> GetSignalConditioner(std::shared_ptr<ConfigurationInterface> configuration,
-            boost::shared_ptr<gr::msg_queue> queue, int ID=-1);
+            boost::shared_ptr<gr::msg_queue> queue, int ID = -1);
 
     std::unique_ptr<GNSSBlockInterface> GetPVT(std::shared_ptr<ConfigurationInterface> configuration,
             boost::shared_ptr<gr::msg_queue> queue);
diff --git a/src/core/receiver/gnss_flowgraph.h b/src/core/receiver/gnss_flowgraph.h
index e6913e117..4b5250995 100644
--- a/src/core/receiver/gnss_flowgraph.h
+++ b/src/core/receiver/gnss_flowgraph.h
@@ -124,7 +124,6 @@ private:
     std::string config_file_;
     std::shared_ptr<ConfigurationInterface> configuration_;
     std::shared_ptr<GNSSBlockFactory> block_factory_;
-    //std::shared_ptr<std::vector<std::shared_ptr<GNSSBlockInterface>>> blocks_ = std::make_shared<std::vector<std::shared_ptr<GNSSBlockInterface>>>();
 
     std::vector<std::shared_ptr<GNSSBlockInterface>> sig_source_;
     std::vector<std::shared_ptr<GNSSBlockInterface>> sig_conditioner_;
diff --git a/src/core/system_parameters/gps_ephemeris.cc b/src/core/system_parameters/gps_ephemeris.cc
index 7a20340d3..c22715ebc 100644
--- a/src/core/system_parameters/gps_ephemeris.cc
+++ b/src/core/system_parameters/gps_ephemeris.cc
@@ -58,21 +58,23 @@ Gps_Ephemeris::Gps_Ephemeris()
     b_L2_P_data_flag = false;
     i_SV_accuracy = 0;
     i_SV_health = 0;
-    d_TGD = 0;            //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
-    d_IODC = 0;           //!< Issue of Data, Clock
-    i_AODO = 0;           //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s]
+    d_IODE_SF2 = 0;
+    d_IODE_SF3 = 0;
+    d_TGD = 0;            // Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
+    d_IODC = 0;           // Issue of Data, Clock
+    i_AODO = 0;           // Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s]
 
-    b_fit_interval_flag = false; //!< indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0  =  4 hours, 1  =  greater than 4 hours.
+    b_fit_interval_flag = false; // indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0  =  4 hours, 1  =  greater than 4 hours.
     d_spare1 = 0;
     d_spare2 = 0;
 
-    d_A_f0 = 0;          //!< Coefficient 0 of code phase offset model [s]
-    d_A_f1 = 0;          //!< Coefficient 1 of code phase offset model [s/s]
-    d_A_f2 = 0;          //!< Coefficient 2 of code phase offset model [s/s^2]
+    d_A_f0 = 0;          // Coefficient 0 of code phase offset model [s]
+    d_A_f1 = 0;          // Coefficient 1 of code phase offset model [s/s]
+    d_A_f2 = 0;          // Coefficient 2 of code phase offset model [s/s^2]
 
     b_integrity_status_flag = false;
-    b_alert_flag = false;         //!< If true, indicates  that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk.
-    b_antispoofing_flag = false;  //!<  If true, the AntiSpoofing mode is ON in that SV
+    b_alert_flag = false;         // If true, indicates  that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk.
+    b_antispoofing_flag = false;  //  If true, the AntiSpoofing mode is ON in that SV
 
     //Plane A (info from http://www.navcen.uscg.gov/?Do=constellationStatus)
     satelliteBlock[9] = "IIA";
diff --git a/src/core/system_parameters/gps_ephemeris.h b/src/core/system_parameters/gps_ephemeris.h
index 08ae407f2..930484e0e 100644
--- a/src/core/system_parameters/gps_ephemeris.h
+++ b/src/core/system_parameters/gps_ephemeris.h
@@ -83,6 +83,8 @@ public:
     int i_SV_health;
     double d_TGD;            //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
     double d_IODC;           //!< Issue of Data, Clock
+    double d_IODE_SF2;       //!< Issue of Data, Ephemeris (IODE), subframe 2
+    double d_IODE_SF3;       //!< Issue of Data, Ephemeris(IODE), subframe 3
     int i_AODO;              //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s]
 
     bool b_fit_interval_flag;//!< indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours.
@@ -133,9 +135,12 @@ public:
     void serialize(Archive& archive, const unsigned int version)
     {
         using boost::serialization::make_nvp;
+        if(version){};
 
         archive & make_nvp("i_satellite_PRN", i_satellite_PRN); // SV PRN NUMBER
         archive & make_nvp("d_TOW", d_TOW);          //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s]
+        archive & make_nvp("d_IODE_SF2", d_IODE_SF2);
+        archive & make_nvp("d_IODE_SF3", d_IODE_SF3);
         archive & make_nvp("d_Crs", d_Crs);          //!< Amplitude of the Sine Harmonic Correction Term to the Orbit Radius [m]
         archive & make_nvp("d_Delta_n", d_Delta_n);  //!< Mean Motion Difference From Computed Value [semi-circles/s]
         archive & make_nvp("d_M_0", d_M_0);          //!< Mean Anomaly at Reference Time [semi-circles]
diff --git a/src/core/system_parameters/gps_iono.h b/src/core/system_parameters/gps_iono.h
index e885d654f..46af3e062 100644
--- a/src/core/system_parameters/gps_iono.h
+++ b/src/core/system_parameters/gps_iono.h
@@ -66,7 +66,7 @@ public:
     void serialize(Archive& archive, const unsigned int version)
     {
         using boost::serialization::make_nvp;
-
+        if(version){};
         archive & make_nvp("d_alpha0",d_alpha0);
         archive & make_nvp("d_alpha1",d_alpha1);
         archive & make_nvp("d_alpha2",d_alpha2);
diff --git a/src/core/system_parameters/gps_navigation_message.cc b/src/core/system_parameters/gps_navigation_message.cc
index 67af26c75..8bf80dc25 100644
--- a/src/core/system_parameters/gps_navigation_message.cc
+++ b/src/core/system_parameters/gps_navigation_message.cc
@@ -43,7 +43,6 @@ void Gps_Navigation_Message::reset()
     d_TOW_SF3 = 0;
     d_TOW_SF4 = 0;
     d_TOW_SF5 = 0;
-
     d_IODE_SF2 = 0;
     d_IODE_SF3 = 0;
     d_Crs = 0;
@@ -762,6 +761,8 @@ Gps_Ephemeris Gps_Navigation_Message::get_ephemeris()
     ephemeris.i_SV_health = i_SV_health;
     ephemeris.d_TGD = d_TGD;
     ephemeris.d_IODC = d_IODC;
+    ephemeris.d_IODE_SF2 = d_IODE_SF2;
+    ephemeris.d_IODE_SF3 = d_IODE_SF3;
     ephemeris.i_AODO = i_AODO;
     ephemeris.b_fit_interval_flag = b_fit_interval_flag;
     ephemeris.d_spare1 = d_spare1;
diff --git a/src/core/system_parameters/gps_ref_location.h b/src/core/system_parameters/gps_ref_location.h
index 327d41c14..21b1a22b5 100644
--- a/src/core/system_parameters/gps_ref_location.h
+++ b/src/core/system_parameters/gps_ref_location.h
@@ -61,7 +61,7 @@ public:
     void serialize(Archive& archive, const unsigned int version)
         {
             using boost::serialization::make_nvp;
-
+            if(version){};
             archive & make_nvp("valid", valid);
             archive & make_nvp("lat", lat);
             archive & make_nvp("lon", lon);
diff --git a/src/core/system_parameters/gps_ref_time.h b/src/core/system_parameters/gps_ref_time.h
index 9d7cd5a32..4360ccbc4 100644
--- a/src/core/system_parameters/gps_ref_time.h
+++ b/src/core/system_parameters/gps_ref_time.h
@@ -62,6 +62,7 @@ public:
     void serialize(Archive& archive, const unsigned int version)
         {
 	    using boost::serialization::make_nvp;
+	    if(version){};
 	    archive & make_nvp("valid", valid);
 	    archive & make_nvp("d_TOW", d_TOW);
 	    archive & make_nvp("d_Week", d_Week);
diff --git a/src/core/system_parameters/gps_utc_model.h b/src/core/system_parameters/gps_utc_model.h
index 7a97c95fe..9d11101f6 100644
--- a/src/core/system_parameters/gps_utc_model.h
+++ b/src/core/system_parameters/gps_utc_model.h
@@ -68,7 +68,7 @@ public:
     void serialize(Archive& archive, const unsigned int version)
     {
         using boost::serialization::make_nvp;
-
+        if(version){};
         archive & make_nvp("valid",valid);
         archive & make_nvp("d_A1",d_A1);
         archive & make_nvp("d_A0",d_A0);
diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
index 3fa176aaa..9ac9c8923 100644
--- a/src/main/CMakeLists.txt
+++ b/src/main/CMakeLists.txt
@@ -89,8 +89,6 @@ install(TARGETS gnss-sdr
 install(DIRECTORY ${CMAKE_SOURCE_DIR}/conf DESTINATION share/gnss-sdr
         FILES_MATCHING PATTERN "*.conf"
         )
-        
-install(DIRECTORY DESTINATION share/gnss-sdr/data/)
 
 install(FILES ${CMAKE_SOURCE_DIR}/conf/gnss-sdr.conf DESTINATION share/gnss-sdr/conf
         RENAME default.conf)
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 21ff8e9bb..47b095eee 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -28,8 +28,7 @@ if(NOT GTEST_DIR_LOCAL)
 else()
 	set(GTEST_DIR_LOCAL true)
 endif(NOT GTEST_DIR_LOCAL)
-find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h
-          PATHS /usr/include)
+
 if(GTEST_INCLUDE_DIRS)
     set(GTEST_DIR_LOCAL true)
 endif(GTEST_INCLUDE_DIRS)
@@ -86,10 +85,8 @@ if(NOT ${GTEST_DIR_LOCAL})
 	 set(GTEST_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/../../gtest-${gtest_RELEASE}")
 else(NOT ${GTEST_DIR_LOCAL})
      if(GTEST_INCLUDE_DIRS)
-          find_path(GTEST_SOURCE_DIR NAMES gtest-all.cc PATHS /usr/src/gtest/src)
-          find_path(GTEST_SOURCE_INCLUDE NAMES src/gtest-all.cc PATHS /usr/src/gtest)
-          set(GTEST_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS} ${GTEST_SOURCE_INCLUDE} ${GTEST_SOURCE_DIR})
-          add_library(gtest ${GTEST_SOURCE_DIR}/gtest-all.cc ${GTEST_SOURCE_DIR}/gtest_main.cc)
+          set(GTEST_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS} ${LIBGTEST_DEV_DIR})
+          add_library(gtest ${LIBGTEST_DEV_DIR}/src/gtest-all.cc ${LIBGTEST_DEV_DIR}/src/gtest_main.cc)
           set(GTEST_LIBRARIES gtest)
      else(GTEST_INCLUDE_DIRS)
           # If the variable GTEST_DIR is defined, we use the existing Googletest
@@ -153,6 +150,7 @@ include_directories(
      ${VOLK_INCLUDE_DIRS}
      ${VOLK_GNSSSDR_INCLUDE_DIRS}
      ${GNSS_SDR_TEST_OPTIONAL_HEADERS}
+     ${GNSS_SDR_TEST_OPTIONAL_HEADERS}
 )
 
 
diff --git a/src/tests/arithmetic/magnitude_squared_test.cc b/src/tests/arithmetic/magnitude_squared_test.cc
index c1e377d25..8473343bc 100644
--- a/src/tests/arithmetic/magnitude_squared_test.cc
+++ b/src/tests/arithmetic/magnitude_squared_test.cc
@@ -50,7 +50,7 @@ TEST(MagnitudeSquared_Test, StandardCComplexImplementation)
 
     for(number = 0; number < (unsigned int)FLAGS_size_magnitude_test; number++)
         {
-            output[number] = (input[number].real()*input[number].real()) + (input[number].imag()*input[number].imag());
+            output[number] = (input[number].real() * input[number].real()) + (input[number].imag() * input[number].imag());
         }
 
     gettimeofday(&tv, NULL);
@@ -66,7 +66,7 @@ TEST(MagnitudeSquared_Test, StandardCComplexImplementation)
 TEST(MagnitudeSquared_Test, C11ComplexImplementation)
 {
     const std::vector<std::complex<float>> input(FLAGS_size_magnitude_test);
-    std::vector<std::complex<float>> output(FLAGS_size_magnitude_test);
+    std::vector<float> output(FLAGS_size_magnitude_test);
     struct timeval tv;
     int pos = 0;
     gettimeofday(&tv, NULL);
diff --git a/src/tests/gnss_block/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/gnss_block/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc
index 8cc675c1e..4c0261b4f 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc
@@ -484,13 +484,15 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
                 }
 
             acquisition->set_local_code();
-
+            //acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
                 {
                     EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
@@ -505,16 +507,7 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
                     EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
                 }
 
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }
 
@@ -583,13 +576,13 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProb
                 }
 
             acquisition->set_local_code();
-
+            //acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
-
+            stop_queue();
             if (i == 0)
                 {
                     std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -601,15 +594,7 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProb
                     std::cout << "Estimated probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
                     std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            ch_thread.join();
         }
 }
diff --git a/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc
index f946e3a7d..c8cb55cfd 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc
@@ -77,7 +77,7 @@ protected:
 
     gr::msg_queue::sptr queue;
     gr::top_block_sptr top_block;
-    std::shared_ptr<AcquisitionInterface> acquisition;
+    std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition;
     std::shared_ptr<GNSSBlockFactory> factory;
     std::shared_ptr<InMemoryConfiguration> config;
     Gnss_Synchro gnss_synchro;
@@ -365,7 +365,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, Instantiate)
 {
     config_1();
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
 }
 
 
@@ -380,7 +380,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
     config_1();
 
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->connect(top_block);
@@ -407,7 +407,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
@@ -464,13 +464,13 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
                 }
 
             acquisition->set_local_code();
-
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
-
+            stop_queue();
             if (i == 0)
             {
                 EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
@@ -483,16 +483,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
             {
                 EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
             }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }
 
@@ -504,7 +495,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProbabi
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
@@ -563,13 +554,15 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProbabi
                 }
 
             acquisition->set_local_code();
-
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -581,15 +574,6 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProbabi
                 std::cout << "Estimated probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
                 std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
             }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }
diff --git a/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc b/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc
index 93417fff7..53f84ed1a 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc
@@ -175,13 +175,12 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, ConnectAndRun)
 
     EXPECT_NO_THROW( {
         gettimeofday(&tv, NULL);
-        begin = tv.tv_sec*1000000 + tv.tv_usec;
+        begin = tv.tv_sec * 1000000 + tv.tv_usec;
         top_block->run(); // Start threads and wait
         gettimeofday(&tv, NULL);
-        end = tv.tv_sec*1000000 + tv.tv_usec;
+        end = tv.tv_sec * 1000000 + tv.tv_usec;
     }) << "Failure running the top_block." << std::endl;
     std::cout <<  "Processed " << nsamples << " samples in " << (end - begin) << " microseconds" << std::endl;
-
 }
 
 TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, ValidationOfResults)
@@ -194,7 +193,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, ValidationOfResults)
 
     init();
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 1, queue);
-    std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
 
 
     ASSERT_NO_THROW( {
@@ -238,29 +237,23 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, ValidationOfResults)
         start_queue();
         acquisition->init();
         acquisition->reset();
+        acquisition->set_state(1);
     }) << "Failure starting acquisition" << std::endl;
 
     EXPECT_NO_THROW( {
         gettimeofday(&tv, NULL);
-        begin = tv.tv_sec*1000000 + tv.tv_usec;
+        begin = tv.tv_sec * 1000000 + tv.tv_usec;
         top_block->run(); // Start threads and wait
         gettimeofday(&tv, NULL);
-        end = tv.tv_sec*1000000 + tv.tv_usec;
+        end = tv.tv_sec * 1000000 + tv.tv_usec;
     }) << "Failure running the top_block." << std::endl;
 
-#ifdef OLD_BOOST
-    ASSERT_NO_THROW( {
-        ch_thread.timed_join(boost::posix_time::seconds(1));
-    }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-    ASSERT_NO_THROW( {
-        ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-    }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+    stop_queue();
 
     unsigned long int nsamples = gnss_synchro.Acq_samplestamp_samples;
     std::cout <<  "Acquired " << nsamples << " samples in " << (end - begin) << " microseconds" << std::endl;
 
-    EXPECT_EQ(0, message) << "Acquisition failure. Expected message: 0=ACQ STOP.";
+    EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 0=ACQ STOP.";
+
+    ch_thread.join();
 }
diff --git a/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_test.cc b/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_test.cc
index 2a9a668ce..7c147a582 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_test.cc
@@ -178,7 +178,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ValidationOfResults)
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 1, queue);
-    std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(gnss_synchro.Channel_ID);
@@ -193,7 +193,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ValidationOfResults)
     }) << "Failure setting channel_internal_queue." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 1e-6));
+        acquisition->set_threshold(config->property("Acquisition.threshold", 1e-9));
     }) << "Failure setting threshold." << std::endl;
 
     ASSERT_NO_THROW( {
@@ -221,7 +221,8 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ValidationOfResults)
     }) << "Failure while starting the queue" << std::endl;
 
     acquisition->init();
-    //acquisition->reset();
+    acquisition->reset();
+    acquisition->set_state(1);
 
     EXPECT_NO_THROW( {
         gettimeofday(&tv, NULL);
@@ -230,21 +231,11 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ValidationOfResults)
         gettimeofday(&tv, NULL);
         end = tv.tv_sec * 1000000 + tv.tv_usec;
     }) << "Failure running the top_block." << std::endl;
-
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+    stop_queue();
 
     unsigned long int nsamples = gnss_synchro.Acq_samplestamp_samples;
     std::cout <<  "Acquired " << nsamples << " samples in " << (end - begin) << " microseconds" << std::endl;
-    //EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
+    EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
 
     std::cout << "Delay: " << gnss_synchro.Acq_delay_samples << std::endl;
     std::cout << "Doppler: " << gnss_synchro.Acq_doppler_hz << std::endl;
@@ -255,5 +246,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ValidationOfResults)
 
     EXPECT_LE(doppler_error_hz, 166) << "Doppler error exceeds the expected value: 166 Hz = 2/(3*integration period)";
     EXPECT_LT(delay_error_chips, 0.175) << "Delay error exceeds the expected value: 0.175 chips";
+
+    ch_thread.join();
 }
 
diff --git a/src/tests/gnss_block/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/gnss_block/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc
index 2ecccac12..1154cadfc 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc
@@ -77,7 +77,7 @@ protected:
 
     gr::msg_queue::sptr queue;
     gr::top_block_sptr top_block;
-    std::shared_ptr<AcquisitionInterface> acquisition;
+    std::shared_ptr<GalileoE1PcpsCccwsrAmbiguousAcquisition> acquisition;
     std::shared_ptr<GNSSBlockFactory> factory;
     std::shared_ptr<InMemoryConfiguration> config;
     Gnss_Synchro gnss_synchro;
@@ -364,7 +364,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, Instantiate)
 {
     config_1();
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
 }
 
 TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ConnectAndRun)
@@ -379,7 +379,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ConnectAndRun)
     queue = gr::msg_queue::make(0);
 
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->connect(top_block);
@@ -406,7 +406,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResults)
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
@@ -437,6 +437,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResults)
     }) << "Failure connecting acquisition to the top_block."<< std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -461,15 +462,18 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResults)
                 {
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
-
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
-
+            acquisition->reset();
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
@@ -502,7 +506,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResultsProbabili
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
@@ -533,6 +537,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResultsProbabili
     }) << "Failure connecting acquisition to the top_block."<< std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -560,14 +565,19 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResultsProbabili
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
 
+            acquisition->set_gnss_synchro(&gnss_synchro);
+            acquisition->init();
+            acquisition->reset();
             acquisition->set_local_code();
-
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block."<< std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -579,15 +589,6 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResultsProbabili
                 std::cout << "Probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
                 std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
             }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }
diff --git a/src/tests/gnss_block/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc b/src/tests/gnss_block/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc
index 2edc568de..edb4f1062 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc
@@ -54,7 +54,7 @@
 #include "galileo_e1_pcps_quicksync_ambiguous_acquisition.h"
 
 DEFINE_double(e1_value_threshold, 0.3, "Value of the threshold for the acquisition");
-DEFINE_int32(e1_value_CN0_dB_0, 44, "Value for the CN0_dB_0 in channel 0");
+DEFINE_int32(e1_value_CN0_dB_0, 50, "Value for the CN0_dB_0 in channel 0");
 
 using google::LogMessage;
 
@@ -211,7 +211,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::config_1()
     config->set_property("Acquisition.doppler_max", "10000");
     config->set_property("Acquisition.doppler_step", "250");
     config->set_property("Acquisition.folding_factor", "2");
-    config->set_property("Acquisition.dump", "true");
+    config->set_property("Acquisition.dump", "false");
 }
 
 void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::config_2()
@@ -316,7 +316,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::config_3()
     std::string signal = "1C";
     signal.copy(gnss_synchro.Signal, 2, 0);
 
-    integration_time_ms = 16;
+    integration_time_ms = 8;
     fs_in = 4e6;
 
     expected_delay_chips = 600;
@@ -362,8 +362,8 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::config_3()
     config->set_property("SignalSource.doppler_Hz_3", "3000");
     config->set_property("SignalSource.delay_chips_3", "300");
 
-    config->set_property("SignalSource.noise_flag", "true");
-    config->set_property("SignalSource.data_flag", "true");
+    config->set_property("SignalSource.noise_flag", "false");//
+    config->set_property("SignalSource.data_flag", "false");//
     config->set_property("SignalSource.BW_BB", "0.97");
 
     config->set_property("InputFilter.implementation", "Fir_Filter");
@@ -396,7 +396,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::config_3()
     config->set_property("Acquisition.doppler_max", "10000");
     config->set_property("Acquisition.doppler_step", "125");
     config->set_property("Acquisition.folding_factor", "4");
-    config->set_property("Acquisition.dump", "true");
+    config->set_property("Acquisition.dump", "false");
 }
 
 void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::start_queue()
@@ -544,7 +544,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
     acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
-        acquisition->set_channel(1);
+        acquisition->set_channel(0);
     }) << "Failure setting channel."<< std::endl;
 
     ASSERT_NO_THROW( {
@@ -564,7 +564,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
     }) << "Failure setting doppler_step."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0.0));
+        acquisition->set_threshold(1);
     }) << "Failure setting threshold."<< std::endl;
 
     ASSERT_NO_THROW( {
@@ -572,6 +572,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
     }) << "Failure connecting acquisition to the top_block." << std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -582,6 +583,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
         top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
     }) << "Failure connecting the blocks of acquisition test." << std::endl;
 
+
     // i = 0 --> satellite in acquisition is visible
     // i = 1 --> satellite in acquisition is not visible
     for (unsigned int i = 0; i < 2; i++)
@@ -596,41 +598,31 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
                 {
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
-
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
+            acquisition->reset();
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block."<< std::endl;
 
+            stop_queue();
+
             if (i == 0)
                 {
-                    //EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
-                    EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
-                    if (message == 1)
-                        {
-                            EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
-                            //EXPECT_EQ(0, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
-                        }
+                    EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
+                    EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
                 }
             else if (i == 1)
                 {
                     EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
-                    //EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            ch_thread.join();
         }
-    LOG(INFO) << "End validation of results test";
+    DLOG(INFO) << "End validation of results test";
 }
 
 
@@ -661,11 +653,11 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
     }) << "Failure setting doppler_max."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_step(config->property("Acquisition.doppler_step", 125));
+        acquisition->set_doppler_step(50);
     }) << "Failure setting doppler_step."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0.0));
+        acquisition->set_threshold(5);
     }) << "Failure setting threshold."<< std::endl;
 
     ASSERT_NO_THROW( {
@@ -673,6 +665,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
     }) << "Failure connecting acquisition to the top_block." << std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -698,39 +691,29 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
 
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
+            acquisition->reset();
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
-            }) << "Failure running the top_block."<< std::endl;
+            }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
             if (i == 0)
                 {
                     EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
-                    if (message == 1)
-                        {
-                            //EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
-                            EXPECT_EQ(2, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
-                        }
+                    EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
                 }
             else if (i == 1)
                 {
-                    //EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
-                    EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
+                    EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
-    LOG(INFO) << "End validation of results with noise+interference test";
+    DLOG(INFO) << "End validation of results with noise+interference test";
 }
 
 TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResultsProbabilities)
@@ -798,13 +781,18 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
 
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
+            acquisition->reset();
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
                 {
                     std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -845,15 +833,6 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
                             pdpfafile.close();
                         }
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }
diff --git a/src/tests/gnss_block/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/gnss_block/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc
index 687c020f8..e4eb6b1ec 100644
--- a/src/tests/gnss_block/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc
+++ b/src/tests/gnss_block/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc
@@ -83,7 +83,7 @@ protected:
 
     gr::msg_queue::sptr queue;
     gr::top_block_sptr top_block;
-    std::shared_ptr<AcquisitionInterface> acquisition;
+    std::shared_ptr<GalileoE1PcpsTongAmbiguousAcquisition> acquisition;
     std::shared_ptr<GNSSBlockFactory> factory;
     std::shared_ptr<InMemoryConfiguration> config;
     Gnss_Synchro gnss_synchro;
@@ -371,7 +371,7 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, Instantiate)
 {
     config_1();
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
 }
 
 TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
@@ -384,7 +384,7 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
     queue = gr::msg_queue::make(0);
     config_1();
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->connect(top_block);
@@ -396,10 +396,10 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
 
     EXPECT_NO_THROW( {
         gettimeofday(&tv, NULL);
-        begin = tv.tv_sec *1e6 + tv.tv_usec;
+        begin = tv.tv_sec * 1e6 + tv.tv_usec;
         top_block->run(); // Start threads and wait
         gettimeofday(&tv, NULL);
-        end = tv.tv_sec *1e6 + tv.tv_usec;
+        end = tv.tv_sec * 1e6 + tv.tv_usec;
     }) << "Failure running the top_block." << std::endl;
 
     std::cout <<  "Processed " << nsamples << " samples in " << (end-begin) << " microseconds" << std::endl;
@@ -411,7 +411,7 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
@@ -426,21 +426,22 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
     }) << "Failure setting channel_internal_queue." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_max(config->property("Acquisition.doppler_max", 10000));
+        acquisition->set_doppler_max(5000);
     }) << "Failure setting doppler_max." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_step(config->property("Acquisition.doppler_step", 500));
+        acquisition->set_doppler_step(100);
     }) << "Failure setting doppler_step." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0.000001));
+        acquisition->set_threshold(0.01);
     }) << "Failure setting threshold." << std::endl;
 
     ASSERT_NO_THROW( {
         acquisition->connect(top_block);
     }) << "Failure connecting acquisition to the top_block." << std::endl;
 
+    acquisition->reset();
     acquisition->init();
 
     ASSERT_NO_THROW( {
@@ -457,7 +458,6 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
     for (unsigned int i = 0; i < 2; i++)
         {
             init();
-            acquisition->reset();
 
             if (i == 0)
                 {
@@ -467,42 +467,31 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
                 {
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
-
+            acquisition->reset();
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
-
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
-                if (message == 1)
-                    {
-                        //EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
-                        EXPECT_EQ(0, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
-                    }
+                EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
             }
             else if (i == 1)
             {
-                //EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
-                    EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
+                EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
             }
 
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-            std::cout << "Delay: " << gnss_synchro.Acq_delay_samples << std::endl;
-              std::cout << "Doppler: " << gnss_synchro.Acq_doppler_hz << std::endl;
+            //std::cout << "Delay: " << gnss_synchro.Acq_delay_samples << std::endl;
+            //std::cout << "Doppler: " << gnss_synchro.Acq_doppler_hz << std::endl;
+            ch_thread.join();
         }
 }
 
@@ -512,7 +501,7 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsPro
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 1, queue);
-    acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
+    acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
 
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
@@ -571,13 +560,15 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsPro
                 }
 
             acquisition->set_local_code();
-
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -589,15 +580,6 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsPro
                 std::cout << "Estimated probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
                 std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
             }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }
diff --git a/src/tests/gnss_block/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc b/src/tests/gnss_block/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc
index 05c03518c..065bd5542 100644
--- a/src/tests/gnss_block/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc
+++ b/src/tests/gnss_block/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc
@@ -646,6 +646,8 @@ TEST_F(GalileoE5aPcpsAcquisitionGSoC2014GensourceTest, ValidationOfSIM)
         top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
      }) << "Failure connecting the blocks of acquisition test." << std::endl;
 
+    acquisition->reset();
+    acquisition->init();
     // USING SIGNAL FROM FILE SOURCE
     /*
     ASSERT_NO_THROW( {
@@ -676,7 +678,7 @@ TEST_F(GalileoE5aPcpsAcquisitionGSoC2014GensourceTest, ValidationOfSIM)
                 {
                     gnss_synchro.PRN = 19; //real
                     //gnss_synchro.PRN = 11; //sim
-                    break;
+                    //break;
                 }
                 //        	case 1:
                 //        	    {
@@ -702,23 +704,21 @@ TEST_F(GalileoE5aPcpsAcquisitionGSoC2014GensourceTest, ValidationOfSIM)
             //                {
             //                    gnss_synchro.PRN = 19; // This satellite is not visible
             //                }
-            acquisition->set_local_code();
-
             start_queue();
 
+            acquisition->reset();
+            acquisition->init();
+            acquisition->set_gnss_synchro(&gnss_synchro);
+            acquisition->set_local_code();
+            acquisition->set_state(1);
+
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block."<< std::endl;
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            stop_queue();
+
+            ch_thread.join();
             //std::cout << gnss_synchro.Acq_delay_samples << "acq delay" <<std::endl;
             //std::cout << gnss_synchro.Acq_doppler_hz << "acq doppler" <<std::endl;
             //std::cout << gnss_synchro.Acq_samplestamp_samples << "acq samples" <<std::endl;
diff --git a/src/tests/gnss_block/gnss_block_factory_test.cc b/src/tests/gnss_block/gnss_block_factory_test.cc
index f3895711b..0e425870a 100644
--- a/src/tests/gnss_block/gnss_block_factory_test.cc
+++ b/src/tests/gnss_block/gnss_block_factory_test.cc
@@ -62,7 +62,7 @@ TEST(GNSS_Block_Factory_Test, InstantiateFileSignalSource)
     EXPECT_STREQ("File_Signal_Source", signal_source->implementation().c_str());
 }
 
-
+/*
 TEST(GNSS_Block_Factory_Test, InstantiateUHDSignalSource)
 {
     std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
@@ -78,7 +78,7 @@ TEST(GNSS_Block_Factory_Test, InstantiateUHDSignalSource)
     EXPECT_STREQ("SignalSource", signal_source->role().c_str());
     EXPECT_STREQ("UHD_Signal_Source", signal_source->implementation().c_str());
 }
-
+*/
 
 TEST(GNSS_Block_Factory_Test, InstantiateWrongSignalSource)
 {
diff --git a/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc b/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc
index 6e3da0821..63c392055 100644
--- a/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc
+++ b/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc
@@ -416,15 +416,15 @@ TEST_F(GpsL1CaPcpsAcquisitionGSoC2013Test, ValidationOfResults)
     }) << "Failure setting channel_internal_queue."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_max(config->property("Acquisition.doppler_max", 10000));
+        acquisition->set_doppler_max(10000);
     }) << "Failure setting doppler_max."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_step(config->property("Acquisition.doppler_step", 500));
+        acquisition->set_doppler_step(500);
     }) << "Failure setting doppler_step."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0.0));
+        acquisition->set_threshold(0.5);
     }) << "Failure setting threshold."<< std::endl;
 
     ASSERT_NO_THROW( {
@@ -458,12 +458,12 @@ TEST_F(GpsL1CaPcpsAcquisitionGSoC2013Test, ValidationOfResults)
                 }
 
             acquisition->set_local_code();
-
+            acquisition->set_state(1); // Ensure that acquisition starts at the first sample
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
-            }) << "Failure running he top_block."<< std::endl;
+            }) << "Failure running the top_block."<< std::endl;
 
             if (i == 0)
             {
diff --git a/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_test.cc b/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_test.cc
index e08fb2fd5..3d0ead13a 100644
--- a/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_test.cc
+++ b/src/tests/gnss_block/gps_l1_ca_pcps_acquisition_test.cc
@@ -99,10 +99,11 @@ void GpsL1CaPcpsAcquisitionTest::init()
     config->set_property("Acquisition.coherent_integration_time_ms", "1");
     config->set_property("Acquisition.dump", "false");
     config->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_Acquisition");
-    config->set_property("Acquisition.threshold", "0.000");
+    config->set_property("Acquisition.threshold", "0.001");
     config->set_property("Acquisition.doppler_max", "5000");
     config->set_property("Acquisition.doppler_step", "500");
     config->set_property("Acquisition.repeat_satellite", "false");
+    config->set_property("Acquisition.pfa", "0.0");
 }
 
 
@@ -133,6 +134,7 @@ void GpsL1CaPcpsAcquisitionTest::stop_queue()
 TEST_F(GpsL1CaPcpsAcquisitionTest, Instantiate)
 {
     init();
+    queue = gr::msg_queue::make(0);
     std::shared_ptr<GpsL1CaPcpsAcquisition> acquisition = std::make_shared<GpsL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 1, queue);
 }
 
@@ -159,10 +161,10 @@ TEST_F(GpsL1CaPcpsAcquisitionTest, ConnectAndRun)
 
     EXPECT_NO_THROW( {
         gettimeofday(&tv, NULL);
-        begin = tv.tv_sec *1000000 + tv.tv_usec;
+        begin = tv.tv_sec * 1000000 + tv.tv_usec;
         top_block->run(); // Start threads and wait
         gettimeofday(&tv, NULL);
-        end = tv.tv_sec *1000000 + tv.tv_usec;
+        end = tv.tv_sec * 1000000 + tv.tv_usec;
     }) << "Failure running the top_block." << std::endl;
 
     std::cout <<  "Processed " << nsamples << " samples in " << (end - begin) << " microseconds" << std::endl;
@@ -176,11 +178,13 @@ TEST_F(GpsL1CaPcpsAcquisitionTest, ValidationOfResults)
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
 
-    double expected_delay_samples = 945;
-    double expected_doppler_hz = 4500;
+    double expected_delay_samples = 524;
+    double expected_doppler_hz = 1680;
     init();
+    start_queue();
     std::shared_ptr<GpsL1CaPcpsAcquisition> acquisition = std::make_shared<GpsL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 1, queue);
 
+
     ASSERT_NO_THROW( {
         acquisition->set_channel(1);
     }) << "Failure setting channel." << std::endl;
@@ -194,15 +198,15 @@ TEST_F(GpsL1CaPcpsAcquisitionTest, ValidationOfResults)
     }) << "Failure setting channel_internal_queue." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0));
+        acquisition->set_threshold(0.1);
     }) << "Failure setting threshold." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_max(config->property("Acquisition.doppler_max", 7000));
+        acquisition->set_doppler_max(10000);
     }) << "Failure setting doppler_max." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_step(config->property("Acquisition.doppler_step", 50));
+        acquisition->set_doppler_step(250);
     }) << "Failure setting doppler_step." << std::endl;
 
     ASSERT_NO_THROW( {
@@ -211,44 +215,38 @@ TEST_F(GpsL1CaPcpsAcquisitionTest, ValidationOfResults)
 
     ASSERT_NO_THROW( {
         std::string path = std::string(TEST_PATH);
-        std::string file = path + "signal_samples/GSoC_CTTC_capture_2012_07_26_4Msps_4ms.dat";
+        //std::string file = path + "signal_samples/GSoC_CTTC_capture_2012_07_26_4Msps_4ms.dat";
+        std::string file = path + "signal_samples/GPS_L1_CA_ID_1_Fs_4Msps_2ms.dat";
         const char * file_name = file.c_str();
         gr::blocks::file_source::sptr file_source = gr::blocks::file_source::make(sizeof(gr_complex), file_name, false);
         top_block->connect(file_source, 0, acquisition->get_left_block(), 0);
     }) << "Failure connecting the blocks of acquisition test." << std::endl;
 
-    start_queue();
 
+    acquisition->set_state(1); // Ensure that acquisition starts at the first sample
     acquisition->init();
-    acquisition->reset();
 
     EXPECT_NO_THROW( {
         gettimeofday(&tv, NULL);
-        begin = tv.tv_sec*1000000 + tv.tv_usec;
+        begin = tv.tv_sec * 1000000 + tv.tv_usec;
         top_block->run(); // Start threads and wait
         gettimeofday(&tv, NULL);
-        end = tv.tv_sec*1000000 + tv.tv_usec;
+        end = tv.tv_sec * 1000000 + tv.tv_usec;
     }) << "Failure running the top_block." << std::endl;
 
-#ifdef OLD_BOOST
-    ch_thread.timed_join(boost::posix_time::seconds(1));
-#endif
-#ifndef OLD_BOOST
-    ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-#endif
+    stop_queue();
 
     unsigned long int nsamples = gnss_synchro.Acq_samplestamp_samples;
     std::cout <<  "Acquired " << nsamples << " samples in " << (end - begin) << " microseconds" << std::endl;
 
     ASSERT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
 
-    std::cout <<  "----Aq_delay: " <<  gnss_synchro.Acq_delay_samples << std::endl;
-    std::cout <<  "----Doppler: " <<  gnss_synchro.Acq_doppler_hz << std::endl;
-
     double delay_error_samples = std::abs(expected_delay_samples - gnss_synchro.Acq_delay_samples);
-    float delay_error_chips = (float)(delay_error_samples*1023/4000);
+    float delay_error_chips = (float)(delay_error_samples * 1023 / 4000);
     double doppler_error_hz = std::abs(expected_doppler_hz - gnss_synchro.Acq_doppler_hz);
 
     EXPECT_LE(doppler_error_hz, 666) << "Doppler error exceeds the expected value: 666 Hz = 2/(3*integration period)";
     EXPECT_LT(delay_error_chips, 0.5) << "Delay error exceeds the expected value: 0.5 chips";
+
+    ch_thread.join();
 }
diff --git a/src/tests/gnss_block/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc b/src/tests/gnss_block/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc
index d3bd2daa0..f1366a13d 100644
--- a/src/tests/gnss_block/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc
+++ b/src/tests/gnss_block/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc
@@ -52,8 +52,8 @@
 #include "signal_generator_c.h"
 #include "gps_l1_ca_pcps_quicksync_acquisition.h"
 
-DEFINE_double(value_threshold, 0.001, "Value of the threshold for the acquisition");
-DEFINE_int32(value_CN0_dB_0, 50, "Value for the CN0_dB_0 in channel 0");
+DEFINE_double(value_threshold, 1, "Value of the threshold for the acquisition");
+DEFINE_int32(value_CN0_dB_0, 44, "Value for the CN0_dB_0 in channel 0");
 
 using google::LogMessage;
 
@@ -202,11 +202,11 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_1()
             std::to_string(integration_time_ms));
     config->set_property("Acquisition.max_dwells", "1");
     config->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_QuickSync_Acquisition");
-    config->set_property("Acquisition.threshold", "100");
+    config->set_property("Acquisition.threshold", "250");
     config->set_property("Acquisition.doppler_max", "10000");
     config->set_property("Acquisition.doppler_step", "250");
     config->set_property("Acquisition.bit_transition_flag", "false");
-    config->set_property("Acquisition.dump", "true");
+    config->set_property("Acquisition.dump", "false");
 }
 
 void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_2()
@@ -226,7 +226,7 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_2()
 	
     /*Unset this flag to eliminates data logging for the Validation of results
 	probabilities test*/
-    dump_test_results = true;
+    dump_test_results = false;
     
     num_of_realizations = 100;
 
@@ -264,8 +264,8 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_2()
     config->set_property("SignalSource.doppler_Hz_3", "3000");
     config->set_property("SignalSource.delay_chips_3", "300");
 
-    config->set_property("SignalSource.noise_flag", "true");
-    config->set_property("SignalSource.data_flag", "true");
+    config->set_property("SignalSource.noise_flag", "false");
+    config->set_property("SignalSource.data_flag", "false");
     config->set_property("SignalSource.BW_BB", "0.97");
 
     config->set_property("InputFilter.implementation", "Fir_Filter");
@@ -295,7 +295,7 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_2()
     config->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_QuickSync_Acquisition");
     config->set_property("Acquisition.threshold", std::to_string(FLAGS_value_threshold));
     config->set_property("Acquisition.doppler_max", "10000");
-    config->set_property("Acquisition.doppler_step", "250");
+    config->set_property("Acquisition.doppler_step", "100");
     config->set_property("Acquisition.bit_transition_flag", "false");
     config->set_property("Acquisition.dump", "false");
 }
@@ -355,8 +355,8 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_3()
     config->set_property("SignalSource.doppler_Hz_3", "3000");
     config->set_property("SignalSource.delay_chips_3", "300");
 
-    config->set_property("SignalSource.noise_flag", "true");
-    config->set_property("SignalSource.data_flag", "true");
+    config->set_property("SignalSource.noise_flag", "false");
+    config->set_property("SignalSource.data_flag", "false");
     config->set_property("SignalSource.BW_BB", "0.97");
 
     config->set_property("InputFilter.implementation", "Fir_Filter");
@@ -382,13 +382,13 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::config_3()
     config->set_property("Acquisition.if", "0");
     config->set_property("Acquisition.coherent_integration_time_ms",
             std::to_string(integration_time_ms));
-    config->set_property("Acquisition.max_dwells", "1");
+    config->set_property("Acquisition.max_dwells", "2");
     config->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_QuickSync_Acquisition");
-    config->set_property("Acquisition.threshold", "1.2");
+    config->set_property("Acquisition.threshold", "0.01");
     config->set_property("Acquisition.doppler_max", "10000");
     config->set_property("Acquisition.doppler_step", "250");
     config->set_property("Acquisition.bit_transition_flag", "false");
-    config->set_property("Acquisition.dump", "true");
+    config->set_property("Acquisition.dump", "false");
 }
 
 void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::start_queue()
@@ -447,7 +447,7 @@ void GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test::process_message()
 
     realization_counter++;
 
-    std::cout << "Progress: " << round((float)realization_counter/num_of_realizations*100) << "% \r" << std::flush;
+    std::cout << "Progress: " << round((float)realization_counter / num_of_realizations * 100) << "% \r" << std::flush;
 
     if (realization_counter == num_of_realizations)
         {
@@ -533,15 +533,15 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResults)
     }) << "Failure setting channel_internal_queue."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_max(config->property("Acquisition.doppler_max", 10000));
+        acquisition->set_doppler_max(10000);
     }) << "Failure setting doppler_max."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_step(config->property("Acquisition.doppler_step", 250));
+        acquisition->set_doppler_step(250);
     }) << "Failure setting doppler_step."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0.0));
+        acquisition->set_threshold(100);
     }) << "Failure setting threshold."<< std::endl;
 
     ASSERT_NO_THROW( {
@@ -549,6 +549,7 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResults)
     }) << "Failure connecting acquisition to the top_block."<< std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -575,13 +576,18 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResults)
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
 
+            acquisition->reset();
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
                 {
                     EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
@@ -598,25 +604,16 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResults)
                     EXPECT_EQ(2, message)
                         << "Acquisition failure. Expected message: 2=ACQ FAIL.";
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            ch_thread.join();
         }
-    unsigned long int nsamples = gnss_synchro.Acq_samplestamp_samples;
-    std::cout <<  "----Acquired: " << nsamples << " samples"<< std::endl;
 }
 
 
 TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsWithNoise)
 {
-    config_3();
+    //config_3();
+    config_1();
     top_block = gr::make_top_block("Acquisition test");
     queue = gr::msg_queue::make(0);
     acquisition = std::make_shared<GpsL1CaPcpsQuickSyncAcquisition>(config.get(), "Acquisition", 1, 1, queue);
@@ -627,29 +624,30 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsWithNoise
 
     ASSERT_NO_THROW( {
         acquisition->set_gnss_synchro(&gnss_synchro);
-    }) << "Failure setting gnss_synchro."<< std::endl;
+    }) << "Failure setting gnss_synchro." << std::endl;
 
     ASSERT_NO_THROW( {
         acquisition->set_channel_queue(&channel_internal_queue);
-    }) << "Failure setting channel_internal_queue."<< std::endl;
+    }) << "Failure setting channel_internal_queue." << std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_max(config->property("Acquisition.doppler_max", 10000));
+        acquisition->set_doppler_max(10000);
     }) << "Failure setting doppler_max."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_doppler_step(config->property("Acquisition.doppler_step", 250));
+        acquisition->set_doppler_step(250);
     }) << "Failure setting doppler_step."<< std::endl;
 
     ASSERT_NO_THROW( {
-        acquisition->set_threshold(config->property("Acquisition.threshold", 0.0));
-    }) << "Failure setting threshold."<< std::endl;
+        acquisition->set_threshold(100);
+    }) << "Failure setting threshold." << std::endl;
 
     ASSERT_NO_THROW( {
         acquisition->connect(top_block);
-    }) << "Failure connecting acquisition to the top_block."<< std::endl;
+    }) << "Failure connecting acquisition to the top_block." << std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -675,43 +673,35 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsWithNoise
                 {
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
-
+            //acquisition->set_local_code();
+            acquisition->reset();
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
                 {
                     EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
                     if (message == 1)
                         {
-
-                            EXPECT_EQ((unsigned int)1, correct_estimation_counter)
-                                << "Acquisition failure. Incorrect parameters estimation.";
+                             EXPECT_EQ((unsigned int)1, correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
                         }
 
                 }
             else if (i == 1)
                 {
-                    EXPECT_EQ(2, message)
-                        << "Acquisition failure. Expected message: 2=ACQ FAIL.";
+                    EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            ch_thread.join();
         }
-    unsigned long int nsamples = gnss_synchro.Acq_samplestamp_samples;
-    std::cout <<  "----Acquired: " << nsamples << " samples"<< std::endl;
 }
 
 
@@ -734,7 +724,7 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsProbabili
         acquisition->set_channel_queue(&channel_internal_queue);
     }) << "Failure setting channel_internal_queue."<< std::endl;
 
-    ASSERT_NO_THROW( {
+  /*  ASSERT_NO_THROW( {
         acquisition->set_doppler_max(config->property("Acquisition.doppler_max", 10000));
     }) << "Failure setting doppler_max."<< std::endl;
 
@@ -744,13 +734,14 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsProbabili
 
     ASSERT_NO_THROW( {
         acquisition->set_threshold(config->property("Acquisition.threshold", 0.0));
-    }) << "Failure setting threshold."<< std::endl;
+    }) << "Failure setting threshold."<< std::endl; */
 
     ASSERT_NO_THROW( {
         acquisition->connect(top_block);
     }) << "Failure connecting acquisition to the top_block."<< std::endl;
 
     acquisition->init();
+    acquisition->reset();
 
     ASSERT_NO_THROW( {
         boost::shared_ptr<GenSignalSource> signal_source;
@@ -778,14 +769,18 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsProbabili
                     gnss_synchro.PRN = 20; // This satellite is not visible
                 }
 
+            acquisition->reset();
+            acquisition->set_gnss_synchro(&gnss_synchro);
             acquisition->set_local_code();
+            acquisition->set_state(1);
             start_queue();
 
-
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
                 {
                     std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -805,8 +800,6 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsProbabili
                             pdpfafile << FLAGS_value_threshold << "," << Pd << "," << Pfa_p << "," << Pmd << std::endl;
                             pdpfafile.close();
                         }
-
-
                 }
             else if (i == 1)
                 {
@@ -826,15 +819,7 @@ TEST_F(GpsL1CaPcpsQuickSyncAcquisitionGSoC2014Test, ValidationOfResultsProbabili
                             pdpfafile.close();
                         }
                 }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            ch_thread.join();
         }
 }
diff --git a/src/tests/gnss_block/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc b/src/tests/gnss_block/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc
index b25dbcf57..693aaf648 100644
--- a/src/tests/gnss_block/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc
+++ b/src/tests/gnss_block/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc
@@ -458,6 +458,7 @@ TEST_F(GpsL1CaPcpsTongAcquisitionGSoC2013Test, ValidationOfResults)
                 }
 
             acquisition->set_local_code();
+            acquisition->set_state(1);
 
             start_queue();
 
@@ -465,6 +466,8 @@ TEST_F(GpsL1CaPcpsTongAcquisitionGSoC2013Test, ValidationOfResults)
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
@@ -478,16 +481,8 @@ TEST_F(GpsL1CaPcpsTongAcquisitionGSoC2013Test, ValidationOfResults)
             {
                 EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
             }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+
+            ch_thread.join();
         }
 }
 
@@ -555,13 +550,15 @@ TEST_F(GpsL1CaPcpsTongAcquisitionGSoC2013Test, ValidationOfResultsProbabilities)
                 }
 
             acquisition->set_local_code();
-
+            acquisition->set_state(1);
             start_queue();
 
             EXPECT_NO_THROW( {
                 top_block->run(); // Start threads and wait
             }) << "Failure running the top_block." << std::endl;
 
+            stop_queue();
+
             if (i == 0)
             {
                 std::cout << "Estimated probability of detection = " << Pd << std::endl;
@@ -573,15 +570,6 @@ TEST_F(GpsL1CaPcpsTongAcquisitionGSoC2013Test, ValidationOfResultsProbabilities)
                 std::cout << "Estimated probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
                 std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
             }
-#ifdef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.timed_join(boost::posix_time::seconds(1));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
-#ifndef OLD_BOOST
-            ASSERT_NO_THROW( {
-                ch_thread.try_join_until(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(50));
-            }) << "Failure while waiting the queue to stop" << std::endl;
-#endif
+            ch_thread.join();
         }
 }