Little changes commited from all files. Cleanup in the lib directory - files moved associated with different blocks moved to associated directories.
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 99207d8..a07a876 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -22,14 +22,14 @@
 ########################################################################
 include(GrPlatform) #define LIB_SUFFIX
 
-include_directories(${Boost_INCLUDE_DIR})
+include_directories(${Boost_INCLUDE_DIR} receiver burst_printer)
 link_directories(${Boost_LIBRARY_DIRS})
 list(APPEND gsm_sources
-    receiver_impl.cc
-    receiver_config.cc 
+    receiver/receiver_impl.cc
+    receiver/receiver_config.cc 
     viterbi_detector.cc 
     sch.c
-    bursts_printer_impl.cc
+    burst_printer/bursts_printer_impl.cc
     )
 
 add_library(gnuradio-gsm SHARED ${gsm_sources})
@@ -52,24 +52,24 @@
 ########################################################################
 # Build and register unit test
 ########################################################################
-include(GrTest)
+#include(GrTest)
 
-include_directories(${CPPUNIT_INCLUDE_DIRS})
+#include_directories(${CPPUNIT_INCLUDE_DIRS})
 
-list(APPEND test_gsm_sources
-    ${CMAKE_CURRENT_SOURCE_DIR}/test_gsm.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gsm.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_receiver.cc
-)
+#list(APPEND test_gsm_sources
+#    ${CMAKE_CURRENT_SOURCE_DIR}/test_gsm.cc
+#    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gsm.cc
+#    ${CMAKE_CURRENT_SOURCE_DIR}/qa_receiver.cc
+#)
 
-add_executable(test-gsm ${test_gsm_sources})
+#add_executable(test-gsm ${test_gsm_sources})
 
-target_link_libraries(
-  test-gsm
-  ${GNURADIO_RUNTIME_LIBRARIES}
-  ${Boost_LIBRARIES}
-  ${CPPUNIT_LIBRARIES}
-  gnuradio-gsm
-)
+#target_link_libraries(
+#  test-gsm
+#  ${GNURADIO_RUNTIME_LIBRARIES}
+#  ${Boost_LIBRARIES}
+#  ${CPPUNIT_LIBRARIES}
+#  gnuradio-gsm
+#)
 
-GR_ADD_TEST(test_gsm test-gsm)
+#GR_ADD_TEST(test_gsm test-gsm)
diff --git a/lib/burst_printer/bursts_printer_impl.cc b/lib/burst_printer/bursts_printer_impl.cc
index ba4ff4c..dbb7023 100644
--- a/lib/burst_printer/bursts_printer_impl.cc
+++ b/lib/burst_printer/bursts_printer_impl.cc
@@ -55,7 +55,7 @@
 
         for(int ii=0; ii<burst_len; ii++)
         {
-          std::cout << std::setprecision(1) << static_cast<int>(burst_elements[ii]) << " ";
+          std::cout << std::setprecision(1) << static_cast<int>(burst_elements[ii]) << "";
         }
         std::cout << std::endl;
     }
diff --git a/lib/burst_printer/bursts_printer_impl.h b/lib/burst_printer/bursts_printer_impl.h
index 932c8c7..81e8be6 100644
--- a/lib/burst_printer/bursts_printer_impl.h
+++ b/lib/burst_printer/bursts_printer_impl.h
@@ -32,7 +32,7 @@
      private:
       void bursts_print(pmt::pmt_t burst);
       std::set<uint16_t> d_c0_channels;
-          
+
      public:
       bursts_printer_impl();
       ~bursts_printer_impl();
diff --git a/lib/receiver/gsm_constants.h b/lib/receiver/gsm_constants.h
index 964c1cf..0308d96 100644
--- a/lib/receiver/gsm_constants.h
+++ b/lib/receiver/gsm_constants.h
@@ -16,6 +16,7 @@
 #define USEFUL_BITS       142  //(2*(DATA_BITS+STEALING_BIT) + N_TRAIN_BITS )
 #define FCCH_BITS         USEFUL_BITS
 #define BURST_SIZE        (USEFUL_BITS+2*TAIL_BITS)
+#define PROCESSED_CHUNK   BURST_SIZE+2*GUARD_PERIOD
 
 #define SCH_DATA_LEN      39
 #define TS_BITS           (TAIL_BITS+USEFUL_BITS+TAIL_BITS+GUARD_BITS)  //a full TS (156 bits)
diff --git a/lib/receiver/receiver_config.h b/lib/receiver/receiver_config.h
index b7ba43a..2014a5b 100644
--- a/lib/receiver/receiver_config.h
+++ b/lib/receiver/receiver_config.h
@@ -95,9 +95,8 @@
         d_timeslot_nr(timeslot_nr),
         d_offset_fractional(0.0),
         d_offset_integer(0.0) {
-      double first_sample_position = (get_frame_nr() * 8 + timeslot_nr) * TS_BITS;
-      d_offset_integer = floor(first_sample_position);
-      d_offset_fractional = first_sample_position - floor(first_sample_position);
+      d_offset_integer = 0;
+      d_offset_fractional = 0;
     }
 
     burst_counter & operator++(int);
diff --git a/lib/receiver/receiver_impl.cc b/lib/receiver/receiver_impl.cc
index 6e92c2d..f718f99 100644
--- a/lib/receiver/receiver_impl.cc
+++ b/lib/receiver/receiver_impl.cc
@@ -38,6 +38,7 @@
 #include <iomanip>
 #include <assert.h>
 #include <boost/scoped_ptr.hpp>
+//#include "plotting/plotting.hpp"
 
 #define SYNC_SEARCH_RANGE 30
 
@@ -78,12 +79,13 @@
     d_signal_dbm(-120)
 {
     int i;
-    set_output_multiple(floor((TS_BITS + 2 * GUARD_PERIOD) * d_OSR)); //don't send samples to the receiver until there are at least samples for one
-                                                                      // burst and two gurad periods (one gurard period is an arbitrary overlap)
+    //set_output_multiple(floor((TS_BITS + 2 * GUARD_PERIOD) * d_OSR)); //don't send samples to the receiver until there are at least samples for one
+    set_output_multiple(floor((TS_BITS + 2 * GUARD_PERIOD) * d_OSR)); // burst and two gurad periods (one gurard period is an arbitrary overlap)
     gmsk_mapper(SYNC_BITS, N_SYNC_BITS, d_sch_training_seq, gr_complex(0.0, -1.0));
     for (i = 0; i < TRAIN_SEQ_NUM; i++)
     {
         gr_complex startpoint = (train_seq[i][0]==0) ? gr_complex(1.0, 0.0) : gr_complex(-1.0, 0.0); //if first bit of the seqeunce ==0  first symbol ==1
+                                                                                                     //if first bit of the seqeunce ==1  first symbol ==-1
         gmsk_mapper(train_seq[i], N_TRAIN_BITS, d_norm_training_seq[i], startpoint);
     }
     message_port_register_out(pmt::mp("bursts"));
@@ -113,7 +115,8 @@
         if (find_fcch_burst(input, noutput_items))   //find frequency correction burst in the input buffer
         {
             //set_frequency(d_freq_offset);                //if fcch search is successful set frequency offset
-            COUT("Freq offset " << d_freq_offset);
+            DCOUT("Freq offset " << d_freq_offset);
+            DCOUT("PPM: " << d_freq_offset/940e6);
             d_state = next_fcch_search;
         }
         else
@@ -125,13 +128,14 @@
     case next_fcch_search:                           //this state is used because it takes some time (a bunch of buffered samples)
     {
         DCOUT("NEXT FCCH search");
-        float prev_freq_offset = d_freq_offset;        //before previous set_frequqency cause change
+        d_prev_freq_offset = d_freq_offset;        //before previous set_frequqency cause change
         if (find_fcch_burst(input, noutput_items))
         {
-            if (abs(prev_freq_offset - d_freq_offset) > FCCH_MAX_FREQ_OFFSET)
+            if (abs(d_prev_freq_offset - d_freq_offset) > FCCH_MAX_FREQ_OFFSET)
             {
                 //set_frequency(d_freq_offset);              //call set_frequncy only frequency offset change is greater than some value
-                DCOUT("Freq offset " << d_freq_offset);
+                //COUT("Freq offset " << d_freq_offset);
+                DCOUT("PPM: " << d_freq_offset/940);
             }
             d_state = sch_search;
         }
@@ -162,7 +166,7 @@
                 d_burst_nr.set(t1, t2, t3, 0);                                  //set counter of bursts value
                 d_burst_nr++;
 
-                consume_each(burst_start + BURST_SIZE * d_OSR);   //consume samples up to next guard period
+                consume_each(burst_start + BURST_SIZE * d_OSR + 4*d_OSR);   //consume samples up to next guard period
                 d_state = synchronized;
             }
             else
@@ -210,7 +214,7 @@
                 double sum = std::accumulate(d_freq_offset_vals.begin(), d_freq_offset_vals.end(), 0);
                 double mean_offset = sum / d_freq_offset_vals.size();                           //compute mean
                 d_freq_offset_vals.clear();
-                DCOUT("mean offset" << mean_offset);
+                DCOUT("mean offset" << mean_offset/940);
                 if (abs(mean_offset) > FCCH_MAX_FREQ_OFFSET)
                 {
                     //d_freq_offset -= mean_offset;                                                 //and adjust frequency if it have changed beyond
@@ -244,7 +248,7 @@
                     d_freq_offset_vals.clear();
                     d_freq_offset=0;
                     //set_frequency(0);
-                    DCOUT("Re-Synchronization");
+                    DCOUT("Re-Synchronization!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                 }
             }
         }
@@ -288,7 +292,6 @@
         }
 
         d_burst_nr++;   //go to next burst
-
         to_consume += TS_BITS * d_OSR + d_burst_nr.get_offset();  //consume samples of the burst up to next guard period
         //and add offset which is introduced by
         //0.25 fractional part of a guard period
@@ -447,7 +450,8 @@
             //compute frequency offset
             double phase_offset = best_sum / FCCH_HITS_NEEDED;
             double freq_offset = phase_offset * 1625000.0 / (12.0 * M_PI);
-            d_freq_offset -= freq_offset;
+            //d_freq_offset -= freq_offset;
+            d_freq_offset = freq_offset;
             DCOUT("freq_offset: " << d_freq_offset);
 
             end = true;
@@ -544,7 +548,7 @@
         correlation_buffer.push_back(correlation);
         power_buffer.push_back(std::pow(abs(correlation), 2));
     }
-
+    //plot(power_buffer);
     //compute window energies
     vector_float::iterator iter = power_buffer.begin();
     bool loop_end = false;
diff --git a/lib/receiver/receiver_impl.h b/lib/receiver/receiver_impl.h
index b8b8b68..42e6d01 100644
--- a/lib/receiver/receiver_impl.h
+++ b/lib/receiver/receiver_impl.h
@@ -60,6 +60,7 @@
         //@{
         unsigned d_fcch_start_pos; ///< position of the first sample of the fcch burst
         float d_freq_offset; ///< frequency offset of the received signal
+        float d_prev_freq_offset; //!!!
         //@}
         std::list<double> d_freq_offset_vals;