diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt
index caf2660..2b94539 100644
--- a/grc/CMakeLists.txt
+++ b/grc/CMakeLists.txt
@@ -21,8 +21,8 @@
 add_subdirectory(decryption)
 add_subdirectory(demapping)
 add_subdirectory(receiver)
+add_subdirectory(flow_control)
 add_subdirectory(misc_utils)
 install(FILES
-    gsm_block_tree.xml
-    DESTINATION share/gnuradio/grc/blocks
+    gsm_block_tree.xml DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/flow_control/CMakeLists.txt b/grc/flow_control/CMakeLists.txt
new file mode 100644
index 0000000..107fac7
--- /dev/null
+++ b/grc/flow_control/CMakeLists.txt
@@ -0,0 +1,25 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+install(FILES
+    gsm_burst_timeslot_splitter.xml
+    gsm_burst_fnr_filter.xml 
+    gsm_dummy_burst_filter.xml
+    gsm_burst_sdcch_subslot_splitter.xml DESTINATION share/gnuradio/grc/blocks
+)
diff --git a/grc/flow_control/gsm_burst_fnr_filter.xml b/grc/flow_control/gsm_burst_fnr_filter.xml
new file mode 100644
index 0000000..d09b6e6
--- /dev/null
+++ b/grc/flow_control/gsm_burst_fnr_filter.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<block>
+  <name>Burst framenumber filter</name>
+  <key>gsm_burst_fnr_filter</key>
+  <import>import grgsm</import>
+  <make>grgsm.burst_fnr_filter($mode, $fnr)</make>
+
+  <param>
+    <name>Mode</name>
+    <key>mode</key>
+    <type>enum</type>
+    <option>
+      <name>Less or equal</name>
+      <key>grgsm.FILTER_LESS_OR_EQUAL</key>
+    </option>
+    <option>
+      <name>Greater or equal</name>
+      <key>grgsm.FILTER_GREATER_OR_EQUAL</key>
+    </option>
+  </param>
+  <param>
+    <name>Framenumber</name>
+    <key>fnr</key>
+    <value>1500123</value>
+    <type>int</type>
+  </param>
+  
+  <sink>
+    <name>in</name>
+    <type>message</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>message</type>
+    <optional>1</optional>
+  </source>
+
+  <doc>
+Burst framenumber filter forwards only blocks with a framenumber satisfying the configured mode, i.e. if mode is "Less or equal", then only bursts with a smaller or equal framenumber are forwarded.
+  </doc>
+</block>
diff --git a/grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml b/grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml
new file mode 100644
index 0000000..4812d0b
--- /dev/null
+++ b/grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<block>
+  <name>Burst SDCCH subslot splitter</name>
+  <key>gsm_burst_sdcch_subslot_splitter</key>
+  <import>import grgsm</import>
+  <make>grgsm.burst_sdcch_subslot_splitter(
+#if int($ports())==4 #
+grgsm.SPLITTER_SDCCH4
+#else
+grgsm.SPLITTER_SDCCH8
+#end if
+  )</make>
+   
+  <param>
+    <name>Mode</name>
+    <key>ports</key>
+    <type>enum</type>
+    <option>
+      <name>SDCCH/8</name>
+      <key>8</key>
+    </option>
+    <option>
+      <name>SDCCH/4</name>
+      <key>4</key>
+    </option>
+  </param>
+    
+  <sink>
+    <name>in</name>
+    <type>message</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>message</type>
+    <nports>$ports</nports>
+    <optional>1</optional>
+  </source>
+
+  <doc>
+Burst SDCCH subslot splitter distributes bursts to eight different output ports depending on the subslots to which the bursts belong.
+This means subslot 0 bursts are sent to port out0, subslot 1 bursts on port out1, and so on.
+  </doc>
+</block>
\ No newline at end of file
diff --git a/grc/flow_control/gsm_burst_timeslot_splitter.xml b/grc/flow_control/gsm_burst_timeslot_splitter.xml
new file mode 100644
index 0000000..91db4db
--- /dev/null
+++ b/grc/flow_control/gsm_burst_timeslot_splitter.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<block>
+  <name>Burst timeslot splitter</name>
+  <key>gsm_burst_timeslot_splitter</key>
+  <import>import grgsm</import>
+  <make>grgsm.burst_timeslot_splitter()</make>
+
+  <sink>
+    <name>in</name>
+    <type>message</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>message</type>
+    <nports>8</nports>
+    <optional>1</optional>
+  </source>
+
+  <doc>
+Burst timeslot splitter distributes bursts to eight different output ports depending on the timeslots of the bursts. 
+This means timeslot 0 bursts are sent to port out0, timeslot 1 bursts on port out1, and so on.
+  </doc>
+</block>
diff --git a/grc/flow_control/gsm_dummy_burst_filter.xml b/grc/flow_control/gsm_dummy_burst_filter.xml
new file mode 100644
index 0000000..046abbf
--- /dev/null
+++ b/grc/flow_control/gsm_dummy_burst_filter.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<block>
+  <name>Dummy burst filter</name>
+  <key>gsm_dummy_burst_filter</key>
+  <import>import grgsm</import>
+  <make>grgsm.dummy_burst_filter()</make>
+
+  <sink>
+    <name>in</name>
+    <type>message</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>message</type>
+    <optional>1</optional>
+  </source>
+
+  <doc>
+This block filters dummy bursts. 
+
+For more information on dummy bursts, see GSM 05.02.
+  </doc>
+</block>
diff --git a/grc/gsm_block_tree.xml b/grc/gsm_block_tree.xml
index 6496fd3..26f607f 100644
--- a/grc/gsm_block_tree.xml
+++ b/grc/gsm_block_tree.xml
@@ -38,14 +38,19 @@
       <block>gsm_tch_f_decoder</block>
     </cat>
     <cat>
+      <name>Flow control</name>
+      <block>gsm_burst_timeslot_splitter</block>
+      <block>gsm_burst_sdcch_subslot_splitter</block>
+      <block>gsm_burst_fnr_filter</block>
+      <block>gsm_dummy_burst_filter</block>
+    </cat>
+    <cat>
       <name>Utilities</name>
       <block>gsm_bursts_printer</block>
-      <block>gsm_burst_sink</block>
-      <block>gsm_burst_source</block>
+      <block>gsm_burst_file_sink</block>
+      <block>gsm_burst_file_source</block>
       <block>gsm_message_file_sink</block>
       <block>gsm_message_file_source</block>
-      <block>gsm_burst_sink_qa</block>
-      <block>gsm_burst_source_qa</block>
       <block>gsm_extract_system_info</block>
       <block>gsm_extract_immediate_assignment</block>
       <block>gsm_controlled_rotator_cc</block>
diff --git a/grc/misc_utils/CMakeLists.txt b/grc/misc_utils/CMakeLists.txt
index 0ace0d8..99985a1 100644
--- a/grc/misc_utils/CMakeLists.txt
+++ b/grc/misc_utils/CMakeLists.txt
@@ -26,10 +26,8 @@
     gsm_bursts_printer.xml
     gsm_clock_offset_corrector.xml
     gsm_tmsi_dumper.xml
+    gsm_burst_file_sink.xml
+    gsm_burst_file_source.xml
     gsm_message_file_sink.xml
-    gsm_message_file_source.xml
-    gsm_burst_sink.xml
-    gsm_burst_source.xml
-    gsm_burst_source_qa.xml
-    gsm_burst_sink_qa.xml DESTINATION share/gnuradio/grc/blocks
+    gsm_message_file_source.xml DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/misc_utils/gsm_burst_sink.xml b/grc/misc_utils/gsm_burst_file_sink.xml
similarity index 70%
rename from grc/misc_utils/gsm_burst_sink.xml
rename to grc/misc_utils/gsm_burst_file_sink.xml
index a0e7532..e468e5f 100644
--- a/grc/misc_utils/gsm_burst_sink.xml
+++ b/grc/misc_utils/gsm_burst_file_sink.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <block>
-  <name>Burst sink</name>
-  <key>gsm_burst_sink</key>
+  <name>Burst file sink</name>
+  <key>gsm_burst_file_sink</key>
   <import>import grgsm</import>
-  <make>grgsm.burst_sink($filename)</make>
+  <make>grgsm.burst_file_sink($filename)</make>
 
   <param>
     <name>Destination file</name>
diff --git a/grc/misc_utils/gsm_burst_source.xml b/grc/misc_utils/gsm_burst_file_source.xml
similarity index 69%
rename from grc/misc_utils/gsm_burst_source.xml
rename to grc/misc_utils/gsm_burst_file_source.xml
index 9e78069..e32a708 100644
--- a/grc/misc_utils/gsm_burst_source.xml
+++ b/grc/misc_utils/gsm_burst_file_source.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <block>
-  <name>Burst source</name>
-  <key>gsm_burst_source</key>
+  <name>Burst file source</name>
+  <key>gsm_burst_file_source</key>
   <import>import grgsm</import>
-  <make>grgsm.burst_source($filename)</make>
+  <make>grgsm.burst_file_source($filename)</make>
 
   <param>
     <name>Source file</name>
diff --git a/grc/misc_utils/gsm_burst_sink_qa.xml b/grc/misc_utils/gsm_burst_sink_qa.xml
deleted file mode 100644
index c028da3..0000000
--- a/grc/misc_utils/gsm_burst_sink_qa.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>QA Burst sink</name>
-  <key>gsm_burst_sink_qa</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_sink_qa()</make>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-</block>
diff --git a/grc/misc_utils/gsm_bursts_printer.xml b/grc/misc_utils/gsm_bursts_printer.xml
index abdb532..821e6bb 100644
--- a/grc/misc_utils/gsm_bursts_printer.xml
+++ b/grc/misc_utils/gsm_bursts_printer.xml
@@ -4,7 +4,8 @@
   <key>gsm_bursts_printer</key>
   <import>import grgsm</import>
   <import>import pmt</import>
-  <make>grgsm.bursts_printer(pmt.intern($prepend_string), $prepend_fnr, $prepend_frame_count, $print_payload_only)</make>
+  <make>grgsm.bursts_printer(pmt.intern($prepend_string), $prepend_fnr,
+    $prepend_frame_count, $print_payload_only, $ignore_dummy_bursts)</make>
 
   <param>
     <name>Prepend String</name>
@@ -55,6 +56,20 @@
       <key>True</key>
     </option>
   </param>
+  <param>
+    <name>Ignore dummy bursts</name>
+    <key>ignore_dummy_bursts</key>
+    <value>False</value>
+    <type>bool</type>
+    <option>
+      <name>False</name>
+      <key>False</key>
+    </option>
+    <option>
+      <name>True</name>
+      <key>True</key>
+    </option>
+  </param>
 
   <sink>
     <name>bursts</name>
@@ -70,6 +85,8 @@
 
 If "Print payload only" is enabled, then only the two data blocks of a burst are printed, tail bits, stealing bits and training sequence are omitted.
 
-Enabling all three options results in an output that is similar to the output of airprobe, i.e. the format is "frame_nr frame_count: databits"
+If "Ignore dummy bursts" is enabled, then the burst printer will not print dummy bursts (see GSM 05.02)
+
+Enabling first three options (or all four options) results in an output that is similar to the output of airprobe, i.e. the format is "frame_nr frame_count: databits"
   </doc>
 </block>
diff --git a/grc/misc_utils/gsm_message_printer.xml b/grc/misc_utils/gsm_message_printer.xml
index 8b44b22..7e390ed 100644
--- a/grc/misc_utils/gsm_message_printer.xml
+++ b/grc/misc_utils/gsm_message_printer.xml
@@ -4,7 +4,7 @@
   <key>gsm_message_printer</key>
   <import>import grgsm</import>
   <import>import pmt</import>
-  <make>grgsm.message_printer(pmt.intern($prepend_string))</make>
+  <make>grgsm.message_printer(pmt.intern($prepend_string), $print_gsmtap_header)</make>
 
   <param>
     <name>Prepend String</name>
@@ -13,6 +13,20 @@
     <type>string</type>
     <hide>part</hide>
   </param>
+  <param>
+    <name>Print GSMTap header</name>
+    <key>print_gsmtap_header</key>
+    <value>False</value>
+    <type>bool</type>
+    <option>
+      <name>False</name>
+      <key>False</key>
+    </option>
+    <option>
+      <name>True</name>
+      <key>True</key>
+    </option>
+  </param>
 
   <sink>
     <name>msgs</name>
diff --git a/grc/qa_utils/CMakeLists.txt b/grc/qa_utils/CMakeLists.txt
new file mode 100644
index 0000000..1f57aa1
--- /dev/null
+++ b/grc/qa_utils/CMakeLists.txt
@@ -0,0 +1,25 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+install(FILES
+    gsm_burst_source.xml
+    gsm_burst_sink.xml
+    gsm_message_source.xml
+    gsm_message_sink.xml DESTINATION share/gnuradio/grc/blocks
+)
diff --git a/grc/qa_utils/gsm_burst_sink.xml b/grc/qa_utils/gsm_burst_sink.xml
new file mode 100644
index 0000000..740960f
--- /dev/null
+++ b/grc/qa_utils/gsm_burst_sink.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<block>
+  <name>Burst sink</name>
+  <key>gsm_burst_sink</key>
+  <import>import grgsm</import>
+  <make>grgsm.burst_sink()</make>
+
+  <sink>
+    <name>in</name>
+    <type>message</type>
+  </sink>
+</block>
diff --git a/grc/misc_utils/gsm_burst_source_qa.xml b/grc/qa_utils/gsm_burst_source.xml
similarity index 79%
rename from grc/misc_utils/gsm_burst_source_qa.xml
rename to grc/qa_utils/gsm_burst_source.xml
index bb04cca..9f55ac5 100644
--- a/grc/misc_utils/gsm_burst_source_qa.xml
+++ b/grc/qa_utils/gsm_burst_source.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <block>
-  <name>QA Burst source</name>
-  <key>gsm_burst_source_qa</key>
+  <name>Burst source</name>
+  <key>gsm_burst_source</key>
   <import>import grgsm</import>
-  <make>grgsm.burst_source_qa($framenumbers, $timeslots, $bursts)</make>
+  <make>grgsm.burst_source($framenumbers, $timeslots, $bursts)</make>
 
   <param>
     <name>Frame numbers</name>
diff --git a/grc/qa_utils/gsm_message_sink.xml b/grc/qa_utils/gsm_message_sink.xml
new file mode 100644
index 0000000..e0d6ac0
--- /dev/null
+++ b/grc/qa_utils/gsm_message_sink.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<block>
+  <name>Message Sink</name>
+  <key>gsm_message_sink</key>
+  <import>import grgsm</import>
+  <make>grgsm.message_sink()</make>
+
+  <sink>
+    <name>in</name>
+    <type>message</type>
+  </sink>
+  
+  <doc>
+This block is a message sink for testing purposes.
+
+The data can be retrieved using function get_messages()
+
+  </doc>
+</block>
diff --git a/grc/qa_utils/gsm_message_source.xml b/grc/qa_utils/gsm_message_source.xml
new file mode 100644
index 0000000..ab06f65
--- /dev/null
+++ b/grc/qa_utils/gsm_message_source.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<block>
+  <name>Message Source</name>
+  <key>gsm_message_source</key>
+  <import>import grgsm</import>
+  <make>grgsm.message_source($messages)</make>
+
+  <param>
+    <name>Messages</name>
+    <key>messages</key>
+    <value>["02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+"02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+"02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+"02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"]</value>
+    <type>raw</type>
+    <hide>true</hide>
+  </param>
+
+  <source>
+    <name>msgs</name>
+    <type>message</type>
+  </source>
+
+  <doc>
+This block is a basic message source for testing purposes.
+
+It takes a list of strings as input, where each string
+is a whitespace-separated list of hexadecimal values representing the data bytes of a message including the gsmtap header.
+
+Such strings can be obtained using the message printer with option "Print GSMTap header"
+  </doc>
+</block>
diff --git a/include/grgsm/CMakeLists.txt b/include/grgsm/CMakeLists.txt
index fd44c54..e9f6cc2 100644
--- a/include/grgsm/CMakeLists.txt
+++ b/include/grgsm/CMakeLists.txt
@@ -32,4 +32,5 @@
 add_subdirectory(demapping)
 add_subdirectory(receiver)
 add_subdirectory(misc_utils)
-
+add_subdirectory(qa_utils)
+add_subdirectory(flow_control)
diff --git a/include/grgsm/flow_control/CMakeLists.txt b/include/grgsm/flow_control/CMakeLists.txt
new file mode 100644
index 0000000..0a1a95a
--- /dev/null
+++ b/include/grgsm/flow_control/CMakeLists.txt
@@ -0,0 +1,28 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+install(FILES
+    burst_timeslot_splitter.h
+    burst_sdcch_subslot_splitter.h
+    burst_fnr_filter.h
+    dummy_burst_filter.h DESTINATION include/grgsm/flow_control
+)
diff --git a/include/grgsm/misc_utils/burst_sink.h b/include/grgsm/flow_control/burst_fnr_filter.h
similarity index 63%
copy from include/grgsm/misc_utils/burst_sink.h
copy to include/grgsm/flow_control/burst_fnr_filter.h
index 6903df9..9451d58 100644
--- a/include/grgsm/misc_utils/burst_sink.h
+++ b/include/grgsm/flow_control/burst_fnr_filter.h
@@ -1,5 +1,6 @@
 /* -*- c++ -*- */
-/* @file
+/*
+ * @file
  * @author Roman Khassraf <rkhassraf@gmail.com>
  * @section LICENSE
  *
@@ -17,11 +18,11 @@
  * along with gr-gsm; see the file COPYING.  If not, write to
  * the Free Software Foundation, Inc., 51 Franklin Street,
  * Boston, MA 02110-1301, USA.
- *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_H
-#define INCLUDED_GSM_BURST_SINK_H
+
+#ifndef INCLUDED_GSM_BURST_FNR_FILTER_H
+#define INCLUDED_GSM_BURST_FNR_FILTER_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -29,28 +30,35 @@
 namespace gr {
   namespace gsm {
 
+    enum filter_mode
+    {
+        FILTER_LESS_OR_EQUAL,
+        FILTER_GREATER_OR_EQUAL
+    };
+
     /*!
      * \brief <+description of block+>
      * \ingroup gsm
      *
      */
-    class GSM_API burst_sink : virtual public gr::block
+    class GSM_API burst_fnr_filter : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_sink> sptr;
+      typedef boost::shared_ptr<burst_fnr_filter> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_sink.
+       * \brief Return a shared_ptr to a new instance of gsm::burst_fnr_filter.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_sink's
+       * To avoid accidental use of raw pointers, gsm::burst_fnr_filter's
        * constructor is in a private implementation
-       * class. grgsm::burst_sink::make is the public interface for
+       * class. gsm::burst_fnr_filter::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make(filter_mode mode, unsigned int fnr);
+
     };
+
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_H */
-
+#endif /* INCLUDED_GSM_BURST_FNR_FILTER_H */
diff --git a/include/grgsm/misc_utils/burst_sink.h b/include/grgsm/flow_control/burst_sdcch_subslot_splitter.h
similarity index 68%
copy from include/grgsm/misc_utils/burst_sink.h
copy to include/grgsm/flow_control/burst_sdcch_subslot_splitter.h
index 6903df9..aee2a24 100644
--- a/include/grgsm/misc_utils/burst_sink.h
+++ b/include/grgsm/flow_control/burst_sdcch_subslot_splitter.h
@@ -20,37 +20,42 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_H
-#define INCLUDED_GSM_BURST_SINK_H
+#ifndef INCLUDED_GSM_BURST_SDCCH_SUBSLOT_SPLITTER_H
+#define INCLUDED_GSM_BURST_SDCCH_SUBSLOT_SPLITTER_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
 
 namespace gr {
   namespace gsm {
+      
+    enum splitter_mode
+    {
+        SPLITTER_SDCCH8,
+        SPLITTER_SDCCH4
+    };
 
     /*!
      * \brief <+description of block+>
      * \ingroup gsm
      *
      */
-    class GSM_API burst_sink : virtual public gr::block
+    class GSM_API burst_sdcch_subslot_splitter : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_sink> sptr;
+      typedef boost::shared_ptr<burst_sdcch_subslot_splitter> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_sink.
+       * \brief Return a shared_ptr to a new instance of grgsm::burst_sdcch_subslot_splitter.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_sink's
+       * To avoid accidental use of raw pointers, grgsm::burst_sdcch_subslot_splitter's
        * constructor is in a private implementation
-       * class. grgsm::burst_sink::make is the public interface for
+       * class. grgsm::burst_sdcch_subslot_splitter::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make(splitter_mode mode);
     };
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_H */
-
+#endif /* INCLUDED_GSM_BURST_SDCCH_SUBSLOT_SPLITTER_H */
diff --git a/include/grgsm/misc_utils/burst_sink.h b/include/grgsm/flow_control/burst_timeslot_splitter.h
similarity index 70%
copy from include/grgsm/misc_utils/burst_sink.h
copy to include/grgsm/flow_control/burst_timeslot_splitter.h
index 6903df9..ee6298e 100644
--- a/include/grgsm/misc_utils/burst_sink.h
+++ b/include/grgsm/flow_control/burst_timeslot_splitter.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_H
-#define INCLUDED_GSM_BURST_SINK_H
+#ifndef INCLUDED_GSM_BURST_TIMESLOT_SPLITTER_H
+#define INCLUDED_GSM_BURST_TIMESLOT_SPLITTER_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,23 +34,22 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_sink : virtual public gr::block
+    class GSM_API burst_timeslot_splitter : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_sink> sptr;
+      typedef boost::shared_ptr<burst_timeslot_splitter> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_sink.
+       * \brief Return a shared_ptr to a new instance of grgsm::burst_timeslot_splitter.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_sink's
+       * To avoid accidental use of raw pointers, grgsm::burst_timeslot_splitter's
        * constructor is in a private implementation
-       * class. grgsm::burst_sink::make is the public interface for
+       * class. grgsm::burst_timeslot_splitter::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make();
     };
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_H */
-
+#endif /* INCLUDED_GSM_BURST_TIMESLOT_SPLITTER_H */
diff --git a/include/grgsm/misc_utils/burst_sink.h b/include/grgsm/flow_control/dummy_burst_filter.h
similarity index 72%
copy from include/grgsm/misc_utils/burst_sink.h
copy to include/grgsm/flow_control/dummy_burst_filter.h
index 6903df9..0922433 100644
--- a/include/grgsm/misc_utils/burst_sink.h
+++ b/include/grgsm/flow_control/dummy_burst_filter.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_H
-#define INCLUDED_GSM_BURST_SINK_H
+#ifndef INCLUDED_GSM_DUMMY_BURST_FILTER_H
+#define INCLUDED_GSM_DUMMY_BURST_FILTER_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,23 +34,22 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_sink : virtual public gr::block
+    class GSM_API dummy_burst_filter : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_sink> sptr;
+      typedef boost::shared_ptr<dummy_burst_filter> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_sink.
+       * \brief Return a shared_ptr to a new instance of grgsm::dummy_burst_filter.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_sink's
+       * To avoid accidental use of raw pointers, grgsm::dummy_burst_filter's
        * constructor is in a private implementation
-       * class. grgsm::burst_sink::make is the public interface for
+       * class. grgsm::dummy_burst_filter::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make();
     };
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_H */
-
+#endif /* INCLUDED_GSM_DUMMY_BURST_FILTER_H */
diff --git a/include/grgsm/misc_utils/CMakeLists.txt b/include/grgsm/misc_utils/CMakeLists.txt
index a7b9d67..d85ac21 100644
--- a/include/grgsm/misc_utils/CMakeLists.txt
+++ b/include/grgsm/misc_utils/CMakeLists.txt
@@ -22,16 +22,14 @@
 ########################################################################
 install(FILES
     bursts_printer.h
-    burst_sink.h
-    burst_source.h
+    burst_file_source.h
+    burst_file_sink.h
     message_file_sink.h
     message_file_source.h
-    burst_sink_qa.h
-    burst_source_qa.h
     extract_system_info.h
     extract_immediate_assignment.h
     controlled_rotator_cc.h
     controlled_const_source_f.h
-    message_printer.h 
+    message_printer.h
     tmsi_dumper.h DESTINATION include/grgsm/misc_utils
 )
diff --git a/include/grgsm/misc_utils/burst_sink.h b/include/grgsm/misc_utils/burst_file_sink.h
similarity index 75%
copy from include/grgsm/misc_utils/burst_sink.h
copy to include/grgsm/misc_utils/burst_file_sink.h
index 6903df9..7263baa 100644
--- a/include/grgsm/misc_utils/burst_sink.h
+++ b/include/grgsm/misc_utils/burst_file_sink.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_H
-#define INCLUDED_GSM_BURST_SINK_H
+#ifndef INCLUDED_GSM_BURST_FILE_SINK_H
+#define INCLUDED_GSM_BURST_FILE_SINK_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,17 +34,17 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_sink : virtual public gr::block
+    class GSM_API burst_file_sink : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_sink> sptr;
+      typedef boost::shared_ptr<burst_file_sink> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_sink.
+       * \brief Return a shared_ptr to a new instance of grgsm::burst_file_sink.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_sink's
+       * To avoid accidental use of raw pointers, grgsm::burst_file_sink's
        * constructor is in a private implementation
-       * class. grgsm::burst_sink::make is the public interface for
+       * class. grgsm::burst_file_sink::make is the public interface for
        * creating new instances.
        */
       static sptr make(const std::string &filename);
@@ -52,5 +52,5 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_H */
+#endif /* INCLUDED_GSM_BURST_FILE_SINK_H */
 
diff --git a/include/grgsm/misc_utils/burst_source.h b/include/grgsm/misc_utils/burst_file_source.h
similarity index 75%
rename from include/grgsm/misc_utils/burst_source.h
rename to include/grgsm/misc_utils/burst_file_source.h
index bd8644f..e18ef44 100644
--- a/include/grgsm/misc_utils/burst_source.h
+++ b/include/grgsm/misc_utils/burst_file_source.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_H
-#define INCLUDED_GSM_BURST_SOURCE_H
+#ifndef INCLUDED_GSM_BURST_FILE_SOURCE_H
+#define INCLUDED_GSM_BURST_FILE_SOURCE_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,17 +34,17 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_source : virtual public gr::block
+    class GSM_API burst_file_source : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_source> sptr;
+      typedef boost::shared_ptr<burst_file_source> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_source.
+       * \brief Return a shared_ptr to a new instance of grgsm::burst_file_source.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_source's
+       * To avoid accidental use of raw pointers, grgsm::burst_file_source's
        * constructor is in a private implementation
-       * class. grgsm::burst_source::make is the public interface for
+       * class. grgsm::burst_file_source::make is the public interface for
        * creating new instances.
        */
       static sptr make(const std::string &filename);
@@ -53,5 +53,5 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_H */
+#endif /* INCLUDED_GSM_BURST_FILE_SOURCE_H */
 
diff --git a/include/grgsm/misc_utils/burst_sink_qa.h b/include/grgsm/misc_utils/burst_sink_qa.h
deleted file mode 100644
index 3b5cac2..0000000
--- a/include/grgsm/misc_utils/burst_sink_qa.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- c++ -*- */
-/* @file
- * @author Roman Khassraf <rkhassraf@gmail.com>
- * @section LICENSE
- *
- * Gr-gsm is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * Gr-gsm is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with gr-gsm; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef INCLUDED_GSM_BURST_SINK_QA_H
-#define INCLUDED_GSM_BURST_SINK_QA_H
-
-#include <grgsm/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace gsm {
-
-    /*!
-     * \brief <+description of block+>
-     * \ingroup gsm
-     *
-     */
-    class GSM_API burst_sink_qa : virtual public gr::block
-    {
-     public:
-      typedef boost::shared_ptr<burst_sink_qa> sptr;
-
-      /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_sink_qa.
-       *
-       * To avoid accidental use of raw pointers, grgsm::burst_sink_qa's
-       * constructor is in a private implementation
-       * class. grgsm::burst_sink_qa::make is the public interface for
-       * creating new instances.
-       */
-      static sptr make();
-
-      virtual std::vector<int> get_framenumbers() = 0;
-      virtual std::vector<int> get_timeslots() = 0;
-      virtual std::vector<std::string> get_burst_data() = 0;
-    };
-  } // namespace gsm
-} // namespace gr
-
-#endif /* INCLUDED_GSM_BURST_SINK_QA_H */
-
diff --git a/include/grgsm/misc_utils/bursts_printer.h b/include/grgsm/misc_utils/bursts_printer.h
index 099bf08..eb006c5 100644
--- a/include/grgsm/misc_utils/bursts_printer.h
+++ b/include/grgsm/misc_utils/bursts_printer.h
@@ -51,7 +51,8 @@
        * creating new instances.
        */
       static sptr make(pmt::pmt_t prepend_string, bool prepend_fnr=false,
-        bool prepend_frame_count=false, bool print_payload_only=false);
+        bool prepend_frame_count=false, bool print_payload_only=false,
+        bool ignore_dummy_bursts=false);
     };
 
   } // namespace gsm
diff --git a/include/grgsm/misc_utils/message_printer.h b/include/grgsm/misc_utils/message_printer.h
index 3914707..d40352f 100644
--- a/include/grgsm/misc_utils/message_printer.h
+++ b/include/grgsm/misc_utils/message_printer.h
@@ -48,7 +48,7 @@
        * class. gsm::message_printer::make is the public interface for
        * creating new instances.
        */
-      static sptr make(pmt::pmt_t prepend_string);
+      static sptr make(pmt::pmt_t prepend_string, bool print_gsmtap_header=false);
     };
 
   } // namespace gsm
diff --git a/include/grgsm/qa_utils/CMakeLists.txt b/include/grgsm/qa_utils/CMakeLists.txt
new file mode 100644
index 0000000..44bbbfb
--- /dev/null
+++ b/include/grgsm/qa_utils/CMakeLists.txt
@@ -0,0 +1,28 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install public header files
+########################################################################
+install(FILES
+    burst_sink.h
+    burst_source.h
+    message_source.h
+    message_sink.h DESTINATION include/grgsm/qa_utils
+)
diff --git a/include/grgsm/misc_utils/burst_sink.h b/include/grgsm/qa_utils/burst_sink.h
similarity index 88%
rename from include/grgsm/misc_utils/burst_sink.h
rename to include/grgsm/qa_utils/burst_sink.h
index 6903df9..266cbc8 100644
--- a/include/grgsm/misc_utils/burst_sink.h
+++ b/include/grgsm/qa_utils/burst_sink.h
@@ -47,7 +47,11 @@
        * class. grgsm::burst_sink::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make();
+
+      virtual std::vector<int> get_framenumbers() = 0;
+      virtual std::vector<int> get_timeslots() = 0;
+      virtual std::vector<std::string> get_burst_data() = 0;
     };
   } // namespace gsm
 } // namespace gr
diff --git a/include/grgsm/misc_utils/burst_source_qa.h b/include/grgsm/qa_utils/burst_source.h
similarity index 82%
rename from include/grgsm/misc_utils/burst_source_qa.h
rename to include/grgsm/qa_utils/burst_source.h
index c3c5713..bfed70f 100644
--- a/include/grgsm/misc_utils/burst_source_qa.h
+++ b/include/grgsm/qa_utils/burst_source.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_QA_H
-#define INCLUDED_GSM_BURST_SOURCE_QA_H
+#ifndef INCLUDED_GSM_BURST_SOURCE_H
+#define INCLUDED_GSM_BURST_SOURCE_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,17 +34,17 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_source_qa : virtual public gr::block
+    class GSM_API burst_source : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_source_qa> sptr;
+      typedef boost::shared_ptr<burst_source> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_source_qa.
+       * \brief Return a shared_ptr to a new instance of grgsm::burst_source.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_source_qa's
+       * To avoid accidental use of raw pointers, grgsm::burst_source's
        * constructor is in a private implementation
-       * class. grgsm::burst_source_qa::make is the public interface for
+       * class. grgsm::burst_source::make is the public interface for
        * creating new instances.
        */
       static sptr make(const std::vector<int> &framenumbers,
@@ -59,6 +59,6 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_QA_H */
+#endif /* INCLUDED_GSM_BURST_SOURCE_H */
 
 
diff --git a/include/grgsm/misc_utils/burst_source.h b/include/grgsm/qa_utils/message_sink.h
similarity index 71%
copy from include/grgsm/misc_utils/burst_source.h
copy to include/grgsm/qa_utils/message_sink.h
index bd8644f..5cfe2f7 100644
--- a/include/grgsm/misc_utils/burst_source.h
+++ b/include/grgsm/qa_utils/message_sink.h
@@ -2,26 +2,27 @@
 /* @file
  * @author Roman Khassraf <rkhassraf@gmail.com>
  * @section LICENSE
- *
+ * 
  * Gr-gsm is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 3, or (at your option)
  * any later version.
- *
+ * 
  * Gr-gsm is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
+ * 
  * You should have received a copy of the GNU General Public License
  * along with gr-gsm; see the file COPYING.  If not, write to
  * the Free Software Foundation, Inc., 51 Franklin Street,
  * Boston, MA 02110-1301, USA.
- *
+ * 
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_H
-#define INCLUDED_GSM_BURST_SOURCE_H
+
+#ifndef INCLUDED_GSM_MESSAGE_SINK_H
+#define INCLUDED_GSM_MESSAGE_SINK_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,24 +35,26 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_source : virtual public gr::block
+    class GSM_API message_sink : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_source> sptr;
+      typedef boost::shared_ptr<message_sink> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_source.
+       * \brief Return a shared_ptr to a new instance of grgsm::message_sink.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_source's
+       * To avoid accidental use of raw pointers, grgsm::message_sink's
        * constructor is in a private implementation
-       * class. grgsm::burst_source::make is the public interface for
+       * class. grgsm::message_sink::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make();
+      
+      virtual std::vector<std::string> get_messages() = 0;
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_H */
+#endif /* INCLUDED_GSM_MESSAGE_SINK_H */
 
diff --git a/include/grgsm/misc_utils/burst_source.h b/include/grgsm/qa_utils/message_source.h
similarity index 69%
copy from include/grgsm/misc_utils/burst_source.h
copy to include/grgsm/qa_utils/message_source.h
index bd8644f..5c3e8a1 100644
--- a/include/grgsm/misc_utils/burst_source.h
+++ b/include/grgsm/qa_utils/message_source.h
@@ -20,8 +20,9 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_H
-#define INCLUDED_GSM_BURST_SOURCE_H
+
+#ifndef INCLUDED_GSM_MESSAGE_SOURCE_H
+#define INCLUDED_GSM_MESSAGE_SOURCE_H
 
 #include <grgsm/api.h>
 #include <gnuradio/block.h>
@@ -34,24 +35,26 @@
      * \ingroup gsm
      *
      */
-    class GSM_API burst_source : virtual public gr::block
+    class GSM_API message_source : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<burst_source> sptr;
+      typedef boost::shared_ptr<message_source> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::burst_source.
+       * \brief Return a shared_ptr to a new instance of grgsm::message_source.
        *
-       * To avoid accidental use of raw pointers, grgsm::burst_source's
+       * To avoid accidental use of raw pointers, grgsm::message_source's
        * constructor is in a private implementation
-       * class. grgsm::burst_source::make is the public interface for
+       * class. grgsm::message_source::make is the public interface for
        * creating new instances.
        */
-      static sptr make(const std::string &filename);
+      static sptr make(const std::vector<std::string> &msg_data);
+
+      virtual void set_msg_data(const std::vector<std::string> &msg_data) = 0;
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_H */
+#endif /* INCLUDED_GSM_MESSAGE_SOURCE_H */
 
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 1ddab6d..2278809 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -46,17 +46,25 @@
     decoding/GSM660Tables.cpp
     decoding/GSM503Tables.cpp
     decoding/ViterbiR204.cpp
+    flow_control/burst_timeslot_splitter_impl.cc
+    flow_control/burst_sdcch_subslot_splitter_impl.cc
+    flow_control/burst_fnr_filter_impl.cc
+    flow_control/dummy_burst_filter_impl.cc
     misc_utils/controlled_rotator_cc_impl.cc
     misc_utils/controlled_const_source_f_impl.cc
     misc_utils/message_printer_impl.cc
     misc_utils/tmsi_dumper_impl.cc
-    misc_utils/burst_sink_impl.cc
-    misc_utils/burst_source_impl.cc
-    misc_utils/burst_sink_qa_impl.cc
-    misc_utils/burst_source_qa_impl.cc
+    misc_utils/burst_file_sink_impl.cc
+    misc_utils/burst_file_source_impl.cc
     misc_utils/message_file_sink_impl.cc
-    misc_utils/message_file_source_impl.cc
-    decryption/decryption_impl.cc )
+    misc_utils/message_file_source_impl.cc   
+    qa_utils/burst_sink_impl.cc
+    qa_utils/burst_source_impl.cc
+    qa_utils/message_source_impl.cc
+    qa_utils/message_sink_impl.cc
+    decryption/decryption_impl.cc
+)
+
 
 add_library(gnuradio-grgsm SHARED ${grgsm_sources})
 target_link_libraries(gnuradio-grgsm ${Boost_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES} ${VOLK_LIBRARIES} ${LIBOSMOCORE_LIBRARIES}
diff --git a/lib/flow_control/burst_fnr_filter_impl.cc b/lib/flow_control/burst_fnr_filter_impl.cc
new file mode 100644
index 0000000..1aa6f5b
--- /dev/null
+++ b/lib/flow_control/burst_fnr_filter_impl.cc
@@ -0,0 +1,79 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include "burst_fnr_filter_impl.h"
+#include <stdio.h>
+#include <grgsm/endian.h>
+#include <grgsm/gsmtap.h>
+
+
+namespace gr {
+  namespace gsm {
+
+    burst_fnr_filter::sptr
+    burst_fnr_filter::make(filter_mode mode, unsigned int fnr)
+    {
+      return gnuradio::get_initial_sptr
+        (new burst_fnr_filter_impl(mode, fnr));
+    }
+
+    /*
+     * The private constructor
+     */
+    burst_fnr_filter_impl::burst_fnr_filter_impl(filter_mode mode, unsigned int fnr)
+      : gr::block("burst_fnr_filter",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0)),
+      d_mode(mode),
+      d_framenr(fnr)
+    {
+        message_port_register_in(pmt::mp("in"));       
+        message_port_register_out(pmt::mp("out"));
+
+        set_msg_handler(pmt::mp("in"), boost::bind(&burst_fnr_filter_impl::process_burst, this, _1));
+    }
+
+    /*
+     * Our virtual destructor.
+     */
+    burst_fnr_filter_impl::~burst_fnr_filter_impl() {}
+
+    void burst_fnr_filter_impl::process_burst(pmt::pmt_t msg)
+    {
+        pmt::pmt_t header_plus_burst = pmt::cdr(msg);
+        gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_plus_burst);
+        
+        unsigned int frame_nr = be32toh(header->frame_number);
+        
+        if ((d_mode == FILTER_LESS_OR_EQUAL && frame_nr <= d_framenr)
+            || d_mode == FILTER_GREATER_OR_EQUAL && frame_nr >= d_framenr)
+        {
+            message_port_pub(pmt::mp("out"), msg);
+        }
+    }
+  } /* namespace gsm */
+} /* namespace gr */
diff --git a/lib/misc_utils/burst_sink_impl.h b/lib/flow_control/burst_fnr_filter_impl.h
similarity index 70%
copy from lib/misc_utils/burst_sink_impl.h
copy to lib/flow_control/burst_fnr_filter_impl.h
index f981826..5d9850d 100644
--- a/lib/misc_utils/burst_sink_impl.h
+++ b/lib/flow_control/burst_fnr_filter_impl.h
@@ -20,27 +20,27 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_IMPL_H
-#define INCLUDED_GSM_BURST_SINK_IMPL_H
+#ifndef INCLUDED_GSM_BURST_FNR_FILTER_IMPL_H
+#define INCLUDED_GSM_BURST_FNR_FILTER_IMPL_H
 
-#include <grgsm/misc_utils/burst_sink.h>
-#include <fstream>
+#include <grgsm/flow_control/burst_fnr_filter.h>
 
 namespace gr {
   namespace gsm {
 
-    class burst_sink_impl : public burst_sink
+    class burst_fnr_filter_impl : public burst_fnr_filter
     {
      private:
-        std::ofstream d_output_file;
+      unsigned int d_framenr;
+      filter_mode d_mode;
      public:
-      burst_sink_impl(const std::string &filename);
-      ~burst_sink_impl();
+      burst_fnr_filter_impl(filter_mode mode, unsigned int fnr);
+      ~burst_fnr_filter_impl();
       void process_burst(pmt::pmt_t msg);
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_IMPL_H */
+#endif /* INCLUDED_GSM_BURST_FNR_FILTER_IMPL_H */
 
diff --git a/lib/flow_control/burst_sdcch_subslot_splitter_impl.cc b/lib/flow_control/burst_sdcch_subslot_splitter_impl.cc
new file mode 100644
index 0000000..260fe11
--- /dev/null
+++ b/lib/flow_control/burst_sdcch_subslot_splitter_impl.cc
@@ -0,0 +1,135 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include "burst_sdcch_subslot_splitter_impl.h"
+#include <stdio.h>
+#include <grgsm/endian.h>
+#include <grgsm/gsmtap.h>
+
+
+namespace gr {
+  namespace gsm {
+
+    burst_sdcch_subslot_splitter::sptr
+    burst_sdcch_subslot_splitter::make(splitter_mode mode)
+    {
+      return gnuradio::get_initial_sptr
+        (new burst_sdcch_subslot_splitter_impl(mode));
+    }
+
+    /*
+     * The private constructor
+     */
+    burst_sdcch_subslot_splitter_impl::burst_sdcch_subslot_splitter_impl(splitter_mode mode)
+      : gr::block("burst_sdcch_subslot_splitter",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0)),
+      d_mode(mode)
+    {     
+        message_port_register_in(pmt::mp("in"));
+        
+        message_port_register_out(pmt::mp("out0"));
+        message_port_register_out(pmt::mp("out1"));
+        message_port_register_out(pmt::mp("out2"));
+        message_port_register_out(pmt::mp("out3"));
+        if (d_mode == SPLITTER_SDCCH8)
+        {
+            message_port_register_out(pmt::mp("out4"));
+            message_port_register_out(pmt::mp("out5"));
+            message_port_register_out(pmt::mp("out6"));
+            message_port_register_out(pmt::mp("out7"));
+        }
+        
+        set_msg_handler(pmt::mp("in"), boost::bind(&burst_sdcch_subslot_splitter_impl::process_burst, this, _1));
+    }
+
+    /*
+     * Our virtual destructor.
+     */
+    burst_sdcch_subslot_splitter_impl::~burst_sdcch_subslot_splitter_impl() {}
+
+    void burst_sdcch_subslot_splitter_impl::process_burst(pmt::pmt_t msg)
+    {
+        pmt::pmt_t header_plus_burst = pmt::cdr(msg);
+        gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_plus_burst);
+        
+        uint32_t frame_nr = be32toh(header->frame_number);
+        uint32_t fn_mod102 = frame_nr % 102;
+        
+        int8_t subslot;
+        
+        if (d_mode == SPLITTER_SDCCH8)
+        {
+            subslot = d_subslots_sdcch8[fn_mod102];
+        }
+        else if (d_mode == SPLITTER_SDCCH4)
+        {
+            subslot = d_subslots_sdcch4[fn_mod102];
+        }
+        
+        if ((subslot == -1) || (d_mode == SPLITTER_SDCCH4 && subslot > 3))
+        {
+            return;
+        }
+        
+        std::string port("out");
+
+        switch (subslot)
+        {
+            case 0:
+                port.append("0");
+                break;
+            case 1:
+                port.append("1");
+                break;
+            case 2:
+                port.append("2");
+                break;
+            case 3:
+                port.append("3");
+                break;
+            case 4:
+                port.append("4");
+                break;
+            case 5:
+                port.append("5");
+                break;
+            case 6:
+                port.append("6");
+                break;
+            case 7:
+                port.append("7");
+                break;
+            default:
+                port.append("0");
+                break;
+        }
+
+        message_port_pub(pmt::mp(port), msg);
+    }
+  } /* namespace gsm */
+} /* namespace gr */
diff --git a/lib/flow_control/burst_sdcch_subslot_splitter_impl.h b/lib/flow_control/burst_sdcch_subslot_splitter_impl.h
new file mode 100644
index 0000000..58aff96
--- /dev/null
+++ b/lib/flow_control/burst_sdcch_subslot_splitter_impl.h
@@ -0,0 +1,54 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef INCLUDED_GSM_BURST_SDCCH_SUBSLOT_SPLITTER_IMPL_H
+#define INCLUDED_GSM_BURST_SDCCH_SUBSLOT_SPLITTER_IMPL_H
+
+#include <grgsm/flow_control/burst_sdcch_subslot_splitter.h>
+
+namespace gr {
+  namespace gsm {
+
+    class burst_sdcch_subslot_splitter_impl : public burst_sdcch_subslot_splitter
+    {
+     private:
+      // hardcoded subslots of the channels, both SDCCH and the associated SACCH
+      // -1 means that the particular position in the frame is not SDCCH
+      const int8_t d_subslots_sdcch4[102] = {
+          -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0, 0, 1, 1, 1, 1,-1,-1, 2, 2, 2, 2, 3, 3, 3, 3,-1,-1, 0, 0, 0, 0, 1, 1, 1, 1,-1,
+          -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0, 0, 1, 1, 1, 1,-1,-1, 2, 2, 2, 2, 3, 3, 3, 3,-1,-1, 2, 2, 2, 2, 3, 3, 3, 3,-1
+      };
+      const int8_t d_subslots_sdcch8[102] = {
+          0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,-1,-1,-1,
+          0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,-1,-1,-1
+      };
+      splitter_mode d_mode;
+     public:
+      burst_sdcch_subslot_splitter_impl(splitter_mode mode);
+      ~burst_sdcch_subslot_splitter_impl();
+      void process_burst(pmt::pmt_t msg);
+    };
+
+  } // namespace gsm
+} // namespace gr
+
+#endif /* INCLUDED_GSM_BURST_SDCCH_SUBSLOT_SPLITTER_IMPL_H */
diff --git a/lib/flow_control/burst_timeslot_splitter_impl.cc b/lib/flow_control/burst_timeslot_splitter_impl.cc
new file mode 100644
index 0000000..99964b7
--- /dev/null
+++ b/lib/flow_control/burst_timeslot_splitter_impl.cc
@@ -0,0 +1,114 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include "burst_timeslot_splitter_impl.h"
+#include <stdio.h>
+#include <grgsm/endian.h>
+#include <grgsm/gsmtap.h>
+
+
+namespace gr {
+  namespace gsm {
+
+    burst_timeslot_splitter::sptr
+    burst_timeslot_splitter::make()
+    {
+      return gnuradio::get_initial_sptr
+        (new burst_timeslot_splitter_impl());
+    }
+
+    /*
+     * The private constructor
+     */
+    burst_timeslot_splitter_impl::burst_timeslot_splitter_impl()
+      : gr::block("burst_timeslot_splitter",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0))
+    {
+        message_port_register_in(pmt::mp("in"));
+        
+        message_port_register_out(pmt::mp("out0"));
+        message_port_register_out(pmt::mp("out1"));
+        message_port_register_out(pmt::mp("out2"));
+        message_port_register_out(pmt::mp("out3"));
+        message_port_register_out(pmt::mp("out4"));
+        message_port_register_out(pmt::mp("out5"));
+        message_port_register_out(pmt::mp("out6"));
+        message_port_register_out(pmt::mp("out7"));
+        
+        set_msg_handler(pmt::mp("in"), boost::bind(&burst_timeslot_splitter_impl::process_burst, this, _1));
+    }
+
+    /*
+     * Our virtual destructor.
+     */
+    burst_timeslot_splitter_impl::~burst_timeslot_splitter_impl() {}
+
+    void burst_timeslot_splitter_impl::process_burst(pmt::pmt_t msg)
+    {
+        pmt::pmt_t header_plus_burst = pmt::cdr(msg);
+        gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_plus_burst);
+        
+        unsigned int timeslot = header->timeslot;
+        
+        std::string port("out");
+
+        switch (timeslot)
+        {
+            case 0:
+                port.append("0");
+                break;
+            case 1:
+                port.append("1");
+                break;
+            case 2:
+                port.append("2");
+                break;
+            case 3:
+                port.append("3");
+                break;
+            case 4:
+                port.append("4");
+                break;
+            case 5:
+                port.append("5");
+                break;
+            case 6:
+                port.append("6");
+                break;
+            case 7:
+                port.append("7");
+                break;
+            default:
+                port.append("0");
+                break;
+        }
+        
+        message_port_pub(pmt::mp(port), msg);
+    }
+  } /* namespace gsm */
+} /* namespace gr */
diff --git a/lib/misc_utils/burst_sink_impl.h b/lib/flow_control/burst_timeslot_splitter_impl.h
similarity index 71%
copy from lib/misc_utils/burst_sink_impl.h
copy to lib/flow_control/burst_timeslot_splitter_impl.h
index f981826..47a9115 100644
--- a/lib/misc_utils/burst_sink_impl.h
+++ b/lib/flow_control/burst_timeslot_splitter_impl.h
@@ -20,27 +20,24 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_IMPL_H
-#define INCLUDED_GSM_BURST_SINK_IMPL_H
+#ifndef INCLUDED_GSM_BURST_TIMESLOT_SPLITTER_IMPL_H
+#define INCLUDED_GSM_BURST_TIMESLOT_SPLITTER_IMPL_H
 
-#include <grgsm/misc_utils/burst_sink.h>
-#include <fstream>
+#include <grgsm/flow_control/burst_timeslot_splitter.h>
 
 namespace gr {
   namespace gsm {
 
-    class burst_sink_impl : public burst_sink
+    class burst_timeslot_splitter_impl : public burst_timeslot_splitter
     {
-     private:
-        std::ofstream d_output_file;
      public:
-      burst_sink_impl(const std::string &filename);
-      ~burst_sink_impl();
+      burst_timeslot_splitter_impl();
+      ~burst_timeslot_splitter_impl();
       void process_burst(pmt::pmt_t msg);
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_IMPL_H */
+#endif /* INCLUDED_GSM_BURST_TIMESLOT_SPLITTER_IMPL_H */
 
diff --git a/lib/flow_control/dummy_burst_filter_impl.cc b/lib/flow_control/dummy_burst_filter_impl.cc
new file mode 100644
index 0000000..33c24cb
--- /dev/null
+++ b/lib/flow_control/dummy_burst_filter_impl.cc
@@ -0,0 +1,105 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include "dummy_burst_filter_impl.h"
+#include <stdio.h>
+#include <grgsm/endian.h>
+#include <grgsm/gsmtap.h>
+
+
+namespace gr {
+  namespace gsm {
+      
+    // dummy burst defined in gsm 05.02, section 5.2.6
+    const int8_t dummy_burst_filter_impl::d_dummy_burst[] = {0,0,0,
+        1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,
+        0,0,0,0,1,0,1,0,0,1,0,0,1,1,1,0,
+        0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,
+        0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,
+        0,1,0,1,1,1,0,0,0,1,0,1,1,1,0,0,
+        0,1,0,1,0,1,1,1,0,1,0,0,1,0,1,0,
+        0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,1,
+        1,1,1,0,1,0,0,1,1,1,1,1,0,0,0,1,
+        0,0,1,0,1,1,1,1,1,0,1,0,1,0,
+        0,0,0 };
+
+    dummy_burst_filter::sptr
+    dummy_burst_filter::make()
+    {
+      return gnuradio::get_initial_sptr
+        (new dummy_burst_filter_impl());
+    }
+
+    /*
+     * The private constructor
+     */
+    dummy_burst_filter_impl::dummy_burst_filter_impl()
+      : gr::block("dummy_burst_filter",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0))
+    {
+        message_port_register_in(pmt::mp("in"));        
+        message_port_register_out(pmt::mp("out"));
+        
+        set_msg_handler(pmt::mp("in"), boost::bind(&dummy_burst_filter_impl::process_burst, this, _1));
+    }
+
+    /*
+     * Our virtual destructor.
+     */
+    dummy_burst_filter_impl::~dummy_burst_filter_impl() {}
+
+    void dummy_burst_filter_impl::process_burst(pmt::pmt_t msg)
+    {
+        pmt::pmt_t header_plus_burst = pmt::cdr(msg);
+        int8_t * burst = (int8_t *)(pmt::blob_data(header_plus_burst)) + sizeof(gsmtap_hdr);
+        size_t burst_len = pmt::blob_length(header_plus_burst) - sizeof(gsmtap_hdr);
+        
+        if (!is_dummy_burst(burst, burst_len))
+        {
+            message_port_pub(pmt::mp("out"), msg);
+        }
+    }
+    
+    bool dummy_burst_filter_impl::is_dummy_burst(int8_t *burst, size_t burst_len)
+    {
+        if (burst_len != DUMMY_BURST_LEN)
+        {
+            return false;
+        }
+        for (int i=0; i<DUMMY_BURST_LEN; i++)
+        {
+            if (burst[i] != d_dummy_burst[i])
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+  } /* namespace gsm */
+} /* namespace gr */
diff --git a/lib/misc_utils/burst_sink_impl.h b/lib/flow_control/dummy_burst_filter_impl.h
similarity index 67%
copy from lib/misc_utils/burst_sink_impl.h
copy to lib/flow_control/dummy_burst_filter_impl.h
index f981826..ce9c741 100644
--- a/lib/misc_utils/burst_sink_impl.h
+++ b/lib/flow_control/dummy_burst_filter_impl.h
@@ -20,27 +20,29 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_IMPL_H
-#define INCLUDED_GSM_BURST_SINK_IMPL_H
+#ifndef INCLUDED_GSM_DUMMY_BURST_FILTER_IMPL_H
+#define INCLUDED_GSM_DUMMY_BURST_FILTER_IMPL_H
 
-#include <grgsm/misc_utils/burst_sink.h>
-#include <fstream>
+#define DUMMY_BURST_LEN 148
+
+#include <grgsm/flow_control/dummy_burst_filter.h>
 
 namespace gr {
   namespace gsm {
 
-    class burst_sink_impl : public burst_sink
+    class dummy_burst_filter_impl : public dummy_burst_filter
     {
      private:
-        std::ofstream d_output_file;
+      bool is_dummy_burst(int8_t *burst, size_t burst_len);
+      static const int8_t d_dummy_burst[];
      public:
-      burst_sink_impl(const std::string &filename);
-      ~burst_sink_impl();
+      dummy_burst_filter_impl();
+      ~dummy_burst_filter_impl();
       void process_burst(pmt::pmt_t msg);
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_IMPL_H */
+#endif /* INCLUDED_GSM_DUMMY_BURST_FILTER_IMPL_H */
 
diff --git a/lib/misc_utils/burst_sink_impl.cc b/lib/misc_utils/burst_file_sink_impl.cc
similarity index 76%
rename from lib/misc_utils/burst_sink_impl.cc
rename to lib/misc_utils/burst_file_sink_impl.cc
index fdb7d98..25a262e 100644
--- a/lib/misc_utils/burst_sink_impl.cc
+++ b/lib/misc_utils/burst_file_sink_impl.cc
@@ -25,36 +25,36 @@
 #endif
 
 #include <gnuradio/io_signature.h>
-#include "burst_sink_impl.h"
+#include "burst_file_sink_impl.h"
 #include "stdio.h"
 
 namespace gr {
   namespace gsm {
 
-    burst_sink::sptr
-    burst_sink::make(const std::string &filename)
+    burst_file_sink::sptr
+    burst_file_sink::make(const std::string &filename)
     {
       return gnuradio::get_initial_sptr
-        (new burst_sink_impl(filename));
+        (new burst_file_sink_impl(filename));
     }
 
     /*
      * The private constructor
      */
-    burst_sink_impl::burst_sink_impl(const std::string &filename)
-      : gr::block("burst_sink",
+    burst_file_sink_impl::burst_file_sink_impl(const std::string &filename)
+      : gr::block("burst_file_sink",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0)),
               d_output_file(filename.c_str(), std::ofstream::binary)
     {
         message_port_register_in(pmt::mp("in"));
-        set_msg_handler(pmt::mp("in"), boost::bind(&burst_sink_impl::process_burst, this, _1));
+        set_msg_handler(pmt::mp("in"), boost::bind(&burst_file_sink_impl::process_burst, this, _1));
     }
 
     /*
      * Our virtual destructor.
      */
-    burst_sink_impl::~burst_sink_impl()
+    burst_file_sink_impl::~burst_file_sink_impl()
     {
         if (d_output_file.is_open())
         {
@@ -62,7 +62,7 @@
         }
     }
 
-    void burst_sink_impl::process_burst(pmt::pmt_t msg)
+    void burst_file_sink_impl::process_burst(pmt::pmt_t msg)
     {
         std::string s = pmt::serialize_str(msg);
         const char *serialized = s.data();
diff --git a/lib/misc_utils/burst_sink_impl.h b/lib/misc_utils/burst_file_sink_impl.h
similarity index 75%
rename from lib/misc_utils/burst_sink_impl.h
rename to lib/misc_utils/burst_file_sink_impl.h
index f981826..898c609 100644
--- a/lib/misc_utils/burst_sink_impl.h
+++ b/lib/misc_utils/burst_file_sink_impl.h
@@ -20,27 +20,27 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_IMPL_H
-#define INCLUDED_GSM_BURST_SINK_IMPL_H
+#ifndef INCLUDED_GSM_BURST_FILE_SINK_IMPL_H
+#define INCLUDED_GSM_BURST_FILE_SINK_IMPL_H
 
-#include <grgsm/misc_utils/burst_sink.h>
+#include <grgsm/misc_utils/burst_file_sink.h>
 #include <fstream>
 
 namespace gr {
   namespace gsm {
 
-    class burst_sink_impl : public burst_sink
+    class burst_file_sink_impl : public burst_file_sink
     {
      private:
         std::ofstream d_output_file;
      public:
-      burst_sink_impl(const std::string &filename);
-      ~burst_sink_impl();
+      burst_file_sink_impl(const std::string &filename);
+      ~burst_file_sink_impl();
       void process_burst(pmt::pmt_t msg);
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_IMPL_H */
+#endif /* INCLUDED_GSM_BURST_FILE_SINK_IMPL_H */
 
diff --git a/lib/misc_utils/burst_source_impl.cc b/lib/misc_utils/burst_file_source_impl.cc
similarity index 79%
rename from lib/misc_utils/burst_source_impl.cc
rename to lib/misc_utils/burst_file_source_impl.cc
index 76d1eaa..4661dfb 100644
--- a/lib/misc_utils/burst_source_impl.cc
+++ b/lib/misc_utils/burst_file_source_impl.cc
@@ -25,7 +25,7 @@
 #endif
 
 #include <gnuradio/io_signature.h>
-#include "burst_source_impl.h"
+#include "burst_file_source_impl.h"
 #include "stdio.h"
 
 #define PMT_SIZE 174
@@ -33,18 +33,18 @@
 namespace gr {
   namespace gsm {
 
-    burst_source::sptr
-    burst_source::make(const std::string &filename)
+    burst_file_source::sptr
+    burst_file_source::make(const std::string &filename)
     {
       return gnuradio::get_initial_sptr
-        (new burst_source_impl(filename));
+        (new burst_file_source_impl(filename));
     }
 
     /*
      * The private constructor
      */
-    burst_source_impl::burst_source_impl(const std::string &filename)
-      : gr::block("burst_source",
+    burst_file_source_impl::burst_file_source_impl(const std::string &filename)
+      : gr::block("burst_file_source",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0)),
               d_input_file(filename.c_str(), std::ifstream::binary),
@@ -56,22 +56,22 @@
     /*
      * Our virtual destructor.
      */
-    burst_source_impl::~burst_source_impl()
+    burst_file_source_impl::~burst_file_source_impl()
     {
         if (d_finished == false){
             d_finished = true;
         }
     }
 
-    bool burst_source_impl::start()
+    bool burst_file_source_impl::start()
     {
         d_finished = false;
         d_thread = boost::shared_ptr<gr::thread::thread>
-            (new gr::thread::thread(boost::bind(&burst_source_impl::run, this)));
+            (new gr::thread::thread(boost::bind(&burst_file_source_impl::run, this)));
         return block::start();
     }
 
-    bool burst_source_impl::stop()
+    bool burst_file_source_impl::stop()
     {
         d_finished = true;
         d_thread->interrupt();
@@ -79,12 +79,12 @@
         return block::stop();
     }
 
-    bool burst_source_impl::finished()
+    bool burst_file_source_impl::finished()
     {
         return d_finished;
     }
 
-    void burst_source_impl::run()
+    void burst_file_source_impl::run()
     {
         char *unserialized = (char*)malloc(sizeof(char) * PMT_SIZE);
         while (d_input_file.read(unserialized, PMT_SIZE) && !d_finished)
diff --git a/lib/misc_utils/burst_source_impl.h b/lib/misc_utils/burst_file_source_impl.h
similarity index 76%
rename from lib/misc_utils/burst_source_impl.h
rename to lib/misc_utils/burst_file_source_impl.h
index 85217b0..383dc90 100644
--- a/lib/misc_utils/burst_source_impl.h
+++ b/lib/misc_utils/burst_file_source_impl.h
@@ -20,16 +20,16 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_IMPL_H
-#define INCLUDED_GSM_BURST_SOURCE_IMPL_H
+#ifndef INCLUDED_GSM_BURST_FILE_SOURCE_IMPL_H
+#define INCLUDED_GSM_BURST_FILE_SOURCE_IMPL_H
 
-#include <grgsm/misc_utils/burst_source.h>
+#include <grgsm/misc_utils/burst_file_source.h>
 #include <fstream>
 
 namespace gr {
   namespace gsm {
 
-    class burst_source_impl : public burst_source
+    class burst_file_source_impl : public burst_file_source
     {
      private:
         boost::shared_ptr<gr::thread::thread> d_thread;
@@ -37,8 +37,8 @@
         bool d_finished;
         void run();
      public:
-        burst_source_impl(const std::string &filename);
-        ~burst_source_impl();
+        burst_file_source_impl(const std::string &filename);
+        ~burst_file_source_impl();
         bool start();
         bool stop();
         bool finished();
@@ -46,5 +46,5 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_IMPL_H */
+#endif /* INCLUDED_GSM_BURST_FILE_SOURCE_IMPL_H */
 
diff --git a/lib/misc_utils/bursts_printer_impl.cc b/lib/misc_utils/bursts_printer_impl.cc
index 3b4f026..fd93d79 100644
--- a/lib/misc_utils/bursts_printer_impl.cc
+++ b/lib/misc_utils/bursts_printer_impl.cc
@@ -37,6 +37,19 @@
 namespace gr {
   namespace gsm {
     boost::mutex printer_mutex;
+    // dummy burst defined in gsm 05.02, section 5.2.6
+    const int8_t bursts_printer_impl::d_dummy_burst[] = {0,0,0,
+        1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,
+        0,0,0,0,1,0,1,0,0,1,0,0,1,1,1,0,
+        0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,
+        0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,
+        0,1,0,1,1,1,0,0,0,1,0,1,1,1,0,0,
+        0,1,0,1,0,1,1,1,0,1,0,0,1,0,1,0,
+        0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,1,
+        1,1,1,0,1,0,0,1,1,1,1,1,0,0,0,1,
+        0,0,1,0,1,1,1,1,1,0,1,0,1,0,
+        0,0,0 };
+
     void bursts_printer_impl::bursts_print(pmt::pmt_t msg)
     {
         pmt::pmt_t header_plus_burst = pmt::cdr(msg);
@@ -46,6 +59,11 @@
         size_t burst_len=pmt::blob_length(header_plus_burst)-sizeof(gsmtap_hdr);
         uint32_t frame_nr = be32toh(header->frame_number);
 
+        if (d_ignore_dummy_bursts && is_dummy_burst(burst, burst_len))
+        {
+            return;
+        }
+
         std::cout << d_prepend_string;
         if (d_prepend_fnr)
         {
@@ -94,19 +112,38 @@
         std::cout << std::endl;
     }
 
+    bool bursts_printer_impl::is_dummy_burst(int8_t *burst, size_t burst_len)
+    {
+        if (burst_len != DUMMY_BURST_LEN)
+        {
+            return false;
+        }
+        for (int i=0; i<DUMMY_BURST_LEN; i++)
+        {
+            if (burst[i] != d_dummy_burst[i])
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+
     bursts_printer::sptr
     bursts_printer::make(pmt::pmt_t prepend_string, bool prepend_fnr,
-        bool prepend_frame_count, bool print_payload_only)
+        bool prepend_frame_count, bool print_payload_only,
+        bool ignore_dummy_bursts)
     {
       return gnuradio::get_initial_sptr
-        (new bursts_printer_impl(prepend_string, prepend_fnr, prepend_frame_count, print_payload_only));
+        (new bursts_printer_impl(prepend_string, prepend_fnr, prepend_frame_count,
+            print_payload_only, ignore_dummy_bursts));
     }
 
     /*
      * The private constructor
      */
     bursts_printer_impl::bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr,
-        bool prepend_frame_count, bool print_payload_only)
+        bool prepend_frame_count, bool print_payload_only,
+        bool ignore_dummy_bursts)
       : gr::block("bursts_printer",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
@@ -115,6 +152,8 @@
         d_prepend_fnr = prepend_fnr;
         d_prepend_frame_count = prepend_frame_count;
         d_print_payload_only = print_payload_only;
+        d_ignore_dummy_bursts = ignore_dummy_bursts;
+
         message_port_register_in(pmt::mp("bursts"));
         set_msg_handler(pmt::mp("bursts"), boost::bind(&bursts_printer_impl::bursts_print, this, _1));
     }
diff --git a/lib/misc_utils/bursts_printer_impl.h b/lib/misc_utils/bursts_printer_impl.h
index 5a8a7ed..e438c37 100644
--- a/lib/misc_utils/bursts_printer_impl.h
+++ b/lib/misc_utils/bursts_printer_impl.h
@@ -23,6 +23,8 @@
 #ifndef INCLUDED_GSM_BURSTS_PRINTER_IMPL_H
 #define INCLUDED_GSM_BURSTS_PRINTER_IMPL_H
 
+#define DUMMY_BURST_LEN 148
+
 #include <grgsm/misc_utils/bursts_printer.h>
 #include <set>
 
@@ -37,9 +39,13 @@
       bool d_prepend_fnr;
       bool d_prepend_frame_count;
       bool d_print_payload_only;
+      bool d_ignore_dummy_bursts;
+      bool is_dummy_burst(int8_t *burst, size_t burst_len);
+      static const int8_t d_dummy_burst[];
      public:
       bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr=false,
-        bool prepend_frame_count=false, bool print_payload_only=false);
+        bool prepend_frame_count=false, bool print_payload_only=false,
+        bool ignore_dummy_bursts=false);
       ~bursts_printer_impl();
     };
 
diff --git a/lib/misc_utils/message_printer_impl.cc b/lib/misc_utils/message_printer_impl.cc
index d02e2fe..2599f65 100644
--- a/lib/misc_utils/message_printer_impl.cc
+++ b/lib/misc_utils/message_printer_impl.cc
@@ -41,7 +41,15 @@
         gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header;
         
         std::cout << d_prepend_string;
-        for(int ii=sizeof(gsmtap_hdr); ii<message_plus_header_len; ii++)
+        
+        int start_index = sizeof(gsmtap_hdr);
+        
+        if (d_print_gsmtap_header)
+        {
+            start_index = 0;
+        }
+        
+        for(int ii=start_index; ii<message_plus_header_len; ii++)
         {
             printf(" %02x", message_plus_header[ii]);
         }
@@ -49,24 +57,24 @@
     }
 
     message_printer::sptr
-    message_printer::make(pmt::pmt_t prepend_string)
+    message_printer::make(pmt::pmt_t prepend_string, bool print_gsmtap_header)
     {
       return gnuradio::get_initial_sptr
-        (new message_printer_impl(prepend_string));
+        (new message_printer_impl(prepend_string, print_gsmtap_header));
     }
 
     /*
      * The private constructor
      */
-    message_printer_impl::message_printer_impl(pmt::pmt_t prepend_string)
+    message_printer_impl::message_printer_impl(pmt::pmt_t prepend_string, bool print_gsmtap_header)
       : gr::block("message_printer",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
     {
         d_prepend_string = prepend_string;
+        d_print_gsmtap_header = print_gsmtap_header;
         message_port_register_in(pmt::mp("msgs"));
         set_msg_handler(pmt::mp("msgs"), boost::bind(&message_printer_impl::message_print, this, _1));
-
     }
 
     /*
diff --git a/lib/misc_utils/message_printer_impl.h b/lib/misc_utils/message_printer_impl.h
index e82485e..e44288b 100644
--- a/lib/misc_utils/message_printer_impl.h
+++ b/lib/misc_utils/message_printer_impl.h
@@ -33,8 +33,9 @@
      private:
       void message_print(pmt::pmt_t msg);
       pmt::pmt_t d_prepend_string;
+      bool d_print_gsmtap_header;
      public:
-      message_printer_impl(pmt::pmt_t prepend_string);
+      message_printer_impl(pmt::pmt_t prepend_string, bool print_gsmtap_header=false);
       ~message_printer_impl();
     };
 
diff --git a/lib/misc_utils/burst_sink_qa_impl.cc b/lib/qa_utils/burst_sink_impl.cc
similarity index 80%
rename from lib/misc_utils/burst_sink_qa_impl.cc
rename to lib/qa_utils/burst_sink_impl.cc
index aa9df9d..de26d39 100644
--- a/lib/misc_utils/burst_sink_qa_impl.cc
+++ b/lib/qa_utils/burst_sink_impl.cc
@@ -25,7 +25,7 @@
 #endif
 
 #include <gnuradio/io_signature.h>
-#include "burst_sink_qa_impl.h"
+#include "burst_sink_impl.h"
 #include <stdio.h>
 #include <sstream>
 #include <grgsm/gsmtap.h>
@@ -33,29 +33,29 @@
 namespace gr {
   namespace gsm {
 
-    burst_sink_qa::sptr
-    burst_sink_qa::make()
+    burst_sink::sptr
+    burst_sink::make()
     {
       return gnuradio::get_initial_sptr
-        (new burst_sink_qa_impl());
+        (new burst_sink_impl());
     }
 
     /*
      * The private constructor
      */
-    burst_sink_qa_impl::burst_sink_qa_impl()
-      : gr::block("burst_sink_qa",
+    burst_sink_impl::burst_sink_impl()
+      : gr::block("burst_sink",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
     {
         message_port_register_in(pmt::mp("in"));
-        set_msg_handler(pmt::mp("in"), boost::bind(&burst_sink_qa_impl::process_burst, this, _1));
+        set_msg_handler(pmt::mp("in"), boost::bind(&burst_sink_impl::process_burst, this, _1));
     }
 
     /*
      * Our virtual destructor.
      */
-    burst_sink_qa_impl::~burst_sink_qa_impl()
+    burst_sink_impl::~burst_sink_impl()
     {
 //         for (int i=0; i<d_burst_data.size(); i++)
 //         {
@@ -63,7 +63,7 @@
 //         }
     }
 
-    void burst_sink_qa_impl::process_burst(pmt::pmt_t msg)
+    void burst_sink_impl::process_burst(pmt::pmt_t msg)
     {
         pmt::pmt_t header_plus_burst = pmt::cdr(msg);
 
@@ -90,17 +90,17 @@
         d_burst_data.push_back(burst_str.str());
     }
 
-    std::vector<int> burst_sink_qa_impl::get_framenumbers()
+    std::vector<int> burst_sink_impl::get_framenumbers()
     {
         return d_framenumbers;
     }
 
-    std::vector<int> burst_sink_qa_impl::get_timeslots()
+    std::vector<int> burst_sink_impl::get_timeslots()
     {
         return d_timeslots;
     }
 
-    std::vector<std::string> burst_sink_qa_impl::get_burst_data()
+    std::vector<std::string> burst_sink_impl::get_burst_data()
     {
         return d_burst_data;
     }
diff --git a/lib/misc_utils/burst_sink_qa_impl.h b/lib/qa_utils/burst_sink_impl.h
similarity index 81%
rename from lib/misc_utils/burst_sink_qa_impl.h
rename to lib/qa_utils/burst_sink_impl.h
index 412a0a1..42e1e4a 100644
--- a/lib/misc_utils/burst_sink_qa_impl.h
+++ b/lib/qa_utils/burst_sink_impl.h
@@ -20,24 +20,24 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_QA_IMPL_H
-#define INCLUDED_GSM_BURST_SINK_QA_IMPL_H
+#ifndef INCLUDED_GSM_BURST_SINK_IMPL_H
+#define INCLUDED_GSM_BURST_SINK_IMPL_H
 
-#include <grgsm/misc_utils/burst_sink_qa.h>
+#include <grgsm/qa_utils/burst_sink.h>
 #include <fstream>
 
 namespace gr {
   namespace gsm {
 
-    class burst_sink_qa_impl : public burst_sink_qa
+    class burst_sink_impl : public burst_sink
     {
      private:
       std::vector<int> d_framenumbers;
       std::vector<int> d_timeslots;
       std::vector<std::string> d_burst_data;
      public:
-      burst_sink_qa_impl();
-      ~burst_sink_qa_impl();
+      burst_sink_impl();
+      ~burst_sink_impl();
       void process_burst(pmt::pmt_t msg);
       virtual std::vector<int> get_framenumbers();
       virtual std::vector<int> get_timeslots();
@@ -47,5 +47,5 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_QA_IMPL_H */
+#endif /* INCLUDED_GSM_BURST_SINK_IMPL_H */
 
diff --git a/lib/misc_utils/burst_source_qa_impl.cc b/lib/qa_utils/burst_source_impl.cc
similarity index 82%
rename from lib/misc_utils/burst_source_qa_impl.cc
rename to lib/qa_utils/burst_source_impl.cc
index 7b2d412..7391872 100644
--- a/lib/misc_utils/burst_source_qa_impl.cc
+++ b/lib/qa_utils/burst_source_impl.cc
@@ -25,7 +25,7 @@
 #endif
 
 #include <gnuradio/io_signature.h>
-#include "burst_source_qa_impl.h"
+#include "burst_source_impl.h"
 #include "stdio.h"
 #include <boost/scoped_ptr.hpp>
 #include <grgsm/gsmtap.h>
@@ -36,22 +36,22 @@
 namespace gr {
   namespace gsm {
 
-    burst_source_qa::sptr
-    burst_source_qa::make(const std::vector<int> &framenumbers,
+    burst_source::sptr
+    burst_source::make(const std::vector<int> &framenumbers,
             const std::vector<int> &timeslots,
             const std::vector<std::string> &burst_data)
     {
       return gnuradio::get_initial_sptr
-        (new burst_source_qa_impl(framenumbers, timeslots, burst_data));
+        (new burst_source_impl(framenumbers, timeslots, burst_data));
     }
 
     /*
      * The private constructor
      */
-    burst_source_qa_impl::burst_source_qa_impl(const std::vector<int> &framenumbers,
+    burst_source_impl::burst_source_impl(const std::vector<int> &framenumbers,
             const std::vector<int> &timeslots,
             const std::vector<std::string> &burst_data)
-      : gr::block("burst_source_qa",
+      : gr::block("burst_source",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0)),
               d_finished(false)
@@ -65,37 +65,37 @@
     /*
      * Our virtual destructor.
      */
-    burst_source_qa_impl::~burst_source_qa_impl()
+    burst_source_impl::~burst_source_impl()
     {
         if (d_finished == false){
             d_finished = true;
         }
     }
 
-    void burst_source_qa_impl::set_framenumbers(const std::vector<int> &framenumbers)
+    void burst_source_impl::set_framenumbers(const std::vector<int> &framenumbers)
     {
         d_framenumbers = framenumbers;
     }
 
-    void  burst_source_qa_impl::set_timeslots(const std::vector<int> &timeslots)
+    void  burst_source_impl::set_timeslots(const std::vector<int> &timeslots)
     {
         d_timeslots = timeslots;
     }
 
-    void burst_source_qa_impl::set_burst_data(const std::vector<std::string> &burst_data)
+    void burst_source_impl::set_burst_data(const std::vector<std::string> &burst_data)
     {
         d_burst_data = burst_data;
     }
 
-    bool burst_source_qa_impl::start()
+    bool burst_source_impl::start()
     {
         d_finished = false;
         d_thread = boost::shared_ptr<gr::thread::thread>
-            (new gr::thread::thread(boost::bind(&burst_source_qa_impl::run, this)));
+            (new gr::thread::thread(boost::bind(&burst_source_impl::run, this)));
         return block::start();
     }
 
-    bool burst_source_qa_impl::stop()
+    bool burst_source_impl::stop()
     {
         d_finished = true;
         d_thread->interrupt();
@@ -103,12 +103,12 @@
         return block::stop();
     }
 
-    bool burst_source_qa_impl::finished()
+    bool burst_source_impl::finished()
     {
         return d_finished;
     }
 
-    void burst_source_qa_impl::run()
+    void burst_source_impl::run()
     {
         char *unserialized = (char*)malloc(sizeof(char) * PMT_SIZE);
 
diff --git a/lib/misc_utils/burst_source_qa_impl.h b/lib/qa_utils/burst_source_impl.h
similarity index 81%
rename from lib/misc_utils/burst_source_qa_impl.h
rename to lib/qa_utils/burst_source_impl.h
index cb62571..969faf9 100644
--- a/lib/misc_utils/burst_source_qa_impl.h
+++ b/lib/qa_utils/burst_source_impl.h
@@ -20,19 +20,19 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_QA_IMPL_H
-#define INCLUDED_GSM_BURST_SOURCE_QA_IMPL_H
+#ifndef INCLUDED_GSM_BURST_SOURCE_IMPL_H
+#define INCLUDED_GSM_BURST_SOURCE_IMPL_H
 
 #define BURST_SIZE  148
 
-#include <grgsm/misc_utils/burst_source_qa.h>
+#include <grgsm/qa_utils/burst_source.h>
 #include <fstream>
 
 
 namespace gr {
   namespace gsm {
 
-    class burst_source_qa_impl : public burst_source_qa
+    class burst_source_impl : public burst_source
     {
      private:
         boost::shared_ptr<gr::thread::thread> d_thread;
@@ -42,10 +42,10 @@
         bool d_finished;
         void run();
      public:
-        burst_source_qa_impl(const std::vector<int> &framenumbers,
+        burst_source_impl(const std::vector<int> &framenumbers,
             const std::vector<int> &timeslots,
             const std::vector<std::string> &burst_data);
-        ~burst_source_qa_impl();
+        ~burst_source_impl();
         virtual void set_framenumbers(const std::vector<int> &framenumbers);
         virtual void set_timeslots(const std::vector<int> &timeslots);
         virtual void set_burst_data(const std::vector<std::string> &burst_data);
@@ -56,6 +56,6 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_QA_IMPL_H */
+#endif /* INCLUDED_GSM_BURST_SOURCE_IMPL_H */
 
 
diff --git a/lib/qa_utils/message_sink_impl.cc b/lib/qa_utils/message_sink_impl.cc
new file mode 100644
index 0000000..269cada
--- /dev/null
+++ b/lib/qa_utils/message_sink_impl.cc
@@ -0,0 +1,90 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include "message_sink_impl.h"
+#include <stdio.h>
+#include <sstream>
+
+namespace gr {
+  namespace gsm {
+
+    message_sink::sptr
+    message_sink::make()
+    {
+      return gnuradio::get_initial_sptr
+        (new message_sink_impl());
+    }
+
+    /*
+     * The private constructor
+     */
+    message_sink_impl::message_sink_impl()
+      : gr::block("message_sink",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0))
+    {
+        message_port_register_in(pmt::mp("in"));
+        set_msg_handler(pmt::mp("in"), boost::bind(&message_sink_impl::process_message, this, _1));
+    }
+
+    /*
+     * Our virtual destructor.
+     */
+    message_sink_impl::~message_sink_impl()
+    {
+        for (int i=0; i<d_messages.size(); i++)
+        {
+            std::cout << d_messages[i].c_str() << std::endl;
+        }
+    }
+
+    void message_sink_impl::process_message(pmt::pmt_t msg)
+    {
+        pmt::pmt_t message_plus_header_blob = pmt::cdr(msg);
+        uint8_t * message_plus_header = (uint8_t *)pmt::blob_data(message_plus_header_blob);
+        size_t message_plus_header_len = pmt::blob_length(message_plus_header_blob);
+
+        std::stringstream s_msg_stream;
+        for (int i=0; i<message_plus_header_len; i++)
+        {
+            if (i>0)
+            {
+                s_msg_stream << (" ");
+            }
+            s_msg_stream << std::hex << std::setw(2) << std::setfill('0') << (unsigned)message_plus_header[i];
+        }
+        d_messages.push_back(s_msg_stream.str());
+    }
+
+    std::vector<std::string> message_sink_impl::get_messages()
+    {
+        return d_messages;
+    }
+
+  } /* namespace gsm */
+} /* namespace gr */
+
diff --git a/lib/misc_utils/burst_sink_impl.h b/lib/qa_utils/message_sink_impl.h
similarity index 68%
copy from lib/misc_utils/burst_sink_impl.h
copy to lib/qa_utils/message_sink_impl.h
index f981826..dd11819 100644
--- a/lib/misc_utils/burst_sink_impl.h
+++ b/lib/qa_utils/message_sink_impl.h
@@ -20,27 +20,28 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SINK_IMPL_H
-#define INCLUDED_GSM_BURST_SINK_IMPL_H
+#ifndef INCLUDED_GSM_MESSAGE_SINK_IMPL_H
+#define INCLUDED_GSM_MESSAGE_SINK_IMPL_H
 
-#include <grgsm/misc_utils/burst_sink.h>
-#include <fstream>
+#include <grgsm/qa_utils/message_sink.h>
 
 namespace gr {
   namespace gsm {
 
-    class burst_sink_impl : public burst_sink
+    class message_sink_impl : public message_sink
     {
      private:
-        std::ofstream d_output_file;
+      std::vector<std::string> d_messages;
+
      public:
-      burst_sink_impl(const std::string &filename);
-      ~burst_sink_impl();
-      void process_burst(pmt::pmt_t msg);
+      message_sink_impl();
+      ~message_sink_impl();
+      void process_message(pmt::pmt_t msg);
+      virtual std::vector<std::string> get_messages();
     };
 
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SINK_IMPL_H */
+#endif /* INCLUDED_GSM_MESSAGE_SINK_IMPL_H */
 
diff --git a/lib/qa_utils/message_source_impl.cc b/lib/qa_utils/message_source_impl.cc
new file mode 100644
index 0000000..2e71ba4
--- /dev/null
+++ b/lib/qa_utils/message_source_impl.cc
@@ -0,0 +1,131 @@
+/* -*- c++ -*- */
+/* @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include "message_source_impl.h"
+#include <stdio.h>
+#include <grgsm/gsmtap.h>
+#include <grgsm/endian.h>
+#include <algorithm>
+#include <boost/scoped_ptr.hpp>
+#include <iostream>
+#include <string>
+#include <sstream>
+
+#define MSG_BYTE_LEN 39
+
+
+namespace gr {
+  namespace gsm {
+
+    message_source::sptr
+    message_source::make(const std::vector<std::string> &msg_data)
+    {
+      return gnuradio::get_initial_sptr
+        (new message_source_impl(msg_data));
+    }
+
+    /*
+     * The private constructor
+     */
+    message_source_impl::message_source_impl(const std::vector<std::string> &msg_data)
+      : gr::block("message_source",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0)),
+              d_finished(false)
+    {
+        message_port_register_out(pmt::mp("msgs"));
+        set_msg_data(msg_data);
+    }
+
+    /*
+     * Our virtual destructor.
+     */
+    message_source_impl::~message_source_impl()
+    {
+        if (d_finished == false){
+            d_finished = true;
+        }
+    }
+
+    void message_source_impl::set_msg_data(const std::vector<std::string> &msg_data)
+    {
+        for (int i=0; i<msg_data.size(); i++)
+        {
+            std::istringstream iss(msg_data[i]);
+            std::vector<uint8_t> bytes;
+            unsigned int c;
+
+            while (iss >> std::hex >> c)
+            {
+                if (c < 256)
+                {
+                    bytes.push_back(c);
+                }
+            }
+
+            if (bytes.size() == MSG_BYTE_LEN)
+            {
+                d_msgs.push_back(bytes);
+            }
+        }
+    }
+
+    bool message_source_impl::start()
+    {
+        d_finished = false;
+        d_thread = boost::shared_ptr<gr::thread::thread>
+            (new gr::thread::thread(boost::bind(&message_source_impl::run, this)));
+        return block::start();
+    }
+
+    bool message_source_impl::stop()
+    {
+        d_finished = true;
+        d_thread->interrupt();
+        d_thread->join();
+        return block::stop();
+    }
+
+    bool message_source_impl::finished()
+    {
+        return d_finished;
+    }
+
+    void message_source_impl::run()
+    {
+        for (int i=0; i<d_msgs.size(); i++)
+        {
+            std::vector<uint8_t> current = d_msgs[i];
+            pmt::pmt_t blob_header_plus_burst = pmt::make_blob(&current[0], current.size());
+            pmt::pmt_t msg = pmt::cons(pmt::PMT_NIL, blob_header_plus_burst);
+            message_port_pub(pmt::mp("msgs"), msg);
+        }
+        post(pmt::mp("system"), pmt::cons(pmt::mp("done"), pmt::from_long(1)));
+    }
+  } /* namespace gsm */
+} /* namespace gr */
+
diff --git a/lib/misc_utils/burst_source_impl.h b/lib/qa_utils/message_source_impl.h
similarity index 64%
copy from lib/misc_utils/burst_source_impl.h
copy to lib/qa_utils/message_source_impl.h
index 85217b0..9856f78 100644
--- a/lib/misc_utils/burst_source_impl.h
+++ b/lib/qa_utils/message_source_impl.h
@@ -20,31 +20,32 @@
  *
  */
 
-#ifndef INCLUDED_GSM_BURST_SOURCE_IMPL_H
-#define INCLUDED_GSM_BURST_SOURCE_IMPL_H
+#ifndef INCLUDED_GSM_MESSAGE_SOURCE_IMPL_H
+#define INCLUDED_GSM_MESSAGE_SOURCE_IMPL_H
 
-#include <grgsm/misc_utils/burst_source.h>
-#include <fstream>
+#include <grgsm/qa_utils/message_source.h>
 
 namespace gr {
   namespace gsm {
 
-    class burst_source_impl : public burst_source
+    class message_source_impl : public message_source
     {
      private:
         boost::shared_ptr<gr::thread::thread> d_thread;
-        std::ifstream d_input_file;
+        std::vector<std::vector<uint8_t> > d_msgs;
         bool d_finished;
         void run();
      public:
-        burst_source_impl(const std::string &filename);
-        ~burst_source_impl();
-        bool start();
-        bool stop();
-        bool finished();
+      message_source_impl(const std::vector<std::string> &msg_data);
+      ~message_source_impl();
+      virtual void set_msg_data(const std::vector<std::string> &msg_data);
+      bool start();
+      bool stop();
+      bool finished();
     };
-  } // namespace gsm
+
+  } // namespace grgsm
 } // namespace gr
 
-#endif /* INCLUDED_GSM_BURST_SOURCE_IMPL_H */
+#endif /* INCLUDED_GSM_MESSAGE_SOURCE_IMPL_H */
 
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index cb4b2b2..811a3ec 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -47,5 +47,9 @@
 set(GR_TEST_TARGET_DEPS gr-gsm)
 set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig)
 GR_ADD_TEST(qa_decryption ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_decryption.py)
-#GR_ADD_TEST(qa_receiver ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_receiver.py)
-#GR_ADD_TEST(qa_receiver_hier ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_receiver_hier.py)
+GR_ADD_TEST(qa_burst_printer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_printer.py)
+GR_ADD_TEST(qa_message_printer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_message_printer.py)
+GR_ADD_TEST(qa_burst_timeslot_splitter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_timeslot_splitter.py)
+GR_ADD_TEST(qa_burst_sdcch_subslot_splitter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_sdcch_subslot_splitter.py)
+GR_ADD_TEST(qa_burst_fnr_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_fnr_filter.py)
+GR_ADD_TEST(qa_dummy_burst_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_dummy_burst_filter.py)
diff --git a/python/qa_burst_fnr_filter.py b/python/qa_burst_fnr_filter.py
new file mode 100755
index 0000000..cdd3ff4
--- /dev/null
+++ b/python/qa_burst_fnr_filter.py
@@ -0,0 +1,168 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Roman Khassraf <rkhassraf@gmail.com>
+# @section LICENSE
+# 
+# Gr-gsm is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# Gr-gsm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with gr-gsm; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+# 
+
+from gnuradio import gr, gr_unittest, blocks
+import grgsm
+import pmt
+
+class qa_burst_fnr_filter (gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_001_less_or_equal (self):
+        """
+            filter mode less_or_equal, limiting frame number 1500123
+            25 random framenumbers, timeslots and bursts as input
+        """
+        framenumbers_input = [1259192, 1076346, 1076242, 235879, 1259218, 2194302, 2714322, 1588, 1259244, 1563637, 1435624, 1928543, 503726, 1571144, 2658397, 1807445, 869789, 624070, 2005511, 1306953, 2284894, 1600339, 551375, 1259270, 1500123]
+        timeslots_input = [6, 3, 4, 3, 5, 3, 2, 7, 1, 6, 0, 7, 2, 3, 2, 0, 7, 1, 0, 6, 0, 6, 5, 7, 0]
+        bursts_input = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0001001101101101000111001000101011001101001110110001001100111101001111101100010100111111111001001010011010011111010010010101011001001011011100110000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0001010101111111111010000001010101011111111111101000000001001010000111011101001000011101010111111111111010101000000001010101011011101010000001000000",
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0000010000000010000001001000011001010010000011000101000000001010000111011101001000011101010100100000000001001000001000000100100011000101001000111000",
+            "0001010100110111100000110111100110010100011100011000110110001010000111011101001000011101011111111001111001101010010100000000011111001101000111110000",
+            "0001100110000001011110001000001100101001010100111111000100111010000111011101001000011101000011010010001010111101000100110011111010100010010101000000",
+            "0000010101100101010110000011010000000000000010111001110110101010000111011101001000011101000001000100100001111001100011000101010001110001010100111000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000",
+            "0000001000010001011111111111101010100000010101011101101010101010000111011101001000011101100010010101010101011110101010101000010001011101111010101000",
+            "0000101110101111011001011001000011110010100010011100110010001010000111011101001000011101100000001110000100010100110111001001100010101101100010101000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000",
+            "0001011101101101011100001111001100010001000011011001101110011010000111011101001000011101010010111011100111000001011100100001111010100101111000100000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000",
+            "0000100000110001000000000101000100001010100001001000000000001010000111011101001000011101001010010001101011001011101111101000010001000000000101010000"
+        ]
+
+        bursts_expected = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0001001101101101000111001000101011001101001110110001001100111101001111101100010100111111111001001010011010011111010010010101011001001011011100110000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0000010000000010000001001000011001010010000011000101000000001010000111011101001000011101010100100000000001001000001000000100100011000101001000111000",
+            "0001100110000001011110001000001100101001010100111111000100111010000111011101001000011101000011010010001010111101000100110011111010100010010101000000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000",
+            "0000101110101111011001011001000011110010100010011100110010001010000111011101001000011101100000001110000100010100110111001001100010101101100010101000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000",
+            "0000100000110001000000000101000100001010100001001000000000001010000111011101001000011101001010010001101011001011101111101000010001000000000101010000"
+        ]
+
+        fnr_filter = grgsm.burst_fnr_filter(grgsm.FILTER_LESS_OR_EQUAL, 1500123)
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        sink = grgsm.burst_sink()
+
+        self.tb.msg_connect(src, "out", fnr_filter, "in")
+        self.tb.msg_connect(fnr_filter, "out", sink, "in")
+
+        self.tb.run ()
+
+        bursts_result = list(sink.get_burst_data())
+        
+        self.assertEqual(bursts_expected, bursts_result)
+
+
+    def test_002_greater_or_equal (self):
+        """
+            filter mode greater_or_equal, limiting frame number 1500123
+            25 random framenumbers, timeslots and bursts as input
+        """
+        framenumbers_input = [1259192, 1076346, 1076242, 235879, 1259218, 2194302, 2714322, 1588, 1259244, 1563637, 1435624, 1928543, 503726, 1571144, 2658397, 1807445, 869789, 624070, 2005511, 1306953, 2284894, 1600339, 551375, 1259270, 1500123]
+        timeslots_input = [6, 3, 4, 3, 5, 3, 2, 7, 1, 6, 0, 7, 2, 3, 2, 0, 7, 1, 0, 6, 0, 6, 5, 7, 0]
+        bursts_input = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0001001101101101000111001000101011001101001110110001001100111101001111101100010100111111111001001010011010011111010010010101011001001011011100110000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0001010101111111111010000001010101011111111111101000000001001010000111011101001000011101010111111111111010101000000001010101011011101010000001000000",
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0000010000000010000001001000011001010010000011000101000000001010000111011101001000011101010100100000000001001000001000000100100011000101001000111000",
+            "0001010100110111100000110111100110010100011100011000110110001010000111011101001000011101011111111001111001101010010100000000011111001101000111110000",
+            "0001100110000001011110001000001100101001010100111111000100111010000111011101001000011101000011010010001010111101000100110011111010100010010101000000",
+            "0000010101100101010110000011010000000000000010111001110110101010000111011101001000011101000001000100100001111001100011000101010001110001010100111000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000",
+            "0000001000010001011111111111101010100000010101011101101010101010000111011101001000011101100010010101010101011110101010101000010001011101111010101000",
+            "0000101110101111011001011001000011110010100010011100110010001010000111011101001000011101100000001110000100010100110111001001100010101101100010101000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000",
+            "0001011101101101011100001111001100010001000011011001101110011010000111011101001000011101010010111011100111000001011100100001111010100101111000100000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000",
+            "0000100000110001000000000101000100001010100001001000000000001010000111011101001000011101001010010001101011001011101111101000010001000000000101010000"
+        ]
+
+        bursts_expected = [
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0001010101111111111010000001010101011111111111101000000001001010000111011101001000011101010111111111111010101000000001010101011011101010000001000000",
+            "0001010100110111100000110111100110010100011100011000110110001010000111011101001000011101011111111001111001101010010100000000011111001101000111110000",
+            "0000010101100101010110000011010000000000000010111001110110101010000111011101001000011101000001000100100001111001100011000101010001110001010100111000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0000001000010001011111111111101010100000010101011101101010101010000111011101001000011101100010010101010101011110101010101000010001011101111010101000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000",
+            "0001011101101101011100001111001100010001000011011001101110011010000111011101001000011101010010111011100111000001011100100001111010100101111000100000",
+            "0000100000110001000000000101000100001010100001001000000000001010000111011101001000011101001010010001101011001011101111101000010001000000000101010000"
+        ]
+
+        fnr_filter = grgsm.burst_fnr_filter(grgsm.FILTER_GREATER_OR_EQUAL, 1500123)
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        sink = grgsm.burst_sink()
+
+        self.tb.msg_connect(src, "out", fnr_filter, "in")
+        self.tb.msg_connect(fnr_filter, "out", sink, "in")
+
+        self.tb.run ()
+
+        bursts_result = list(sink.get_burst_data())
+        
+        self.assertEqual(bursts_expected, bursts_result)
+
+if __name__ == '__main__':
+    gr_unittest.run(qa_burst_fnr_filter, "qa_burst_fnr_filter.xml")
diff --git a/python/qa_burst_printer.py b/python/qa_burst_printer.py
new file mode 100755
index 0000000..97fbe71
--- /dev/null
+++ b/python/qa_burst_printer.py
@@ -0,0 +1,297 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Roman Khassraf <rkhassraf@gmail.com>
+# @section LICENSE
+# 
+# Gr-gsm is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# Gr-gsm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with gr-gsm; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+# 
+
+from gnuradio import gr, gr_unittest, blocks
+import grgsm
+import os
+import pmt
+import sys
+import tempfile
+
+class qa_burst_printer (gr_unittest.TestCase):
+   
+    def setUp (self):
+        self.tb = gr.top_block()
+        self.tmpfile = tempfile.NamedTemporaryFile()
+        self.prevfd = os.dup(sys.stdout.fileno())
+        os.dup2(self.tmpfile.fileno(), sys.stdout.fileno())
+        self.prev = sys.stdout
+        sys.stdout = os.fdopen(self.prevfd, "w")
+        
+    def tearDown (self):
+        self.tb = None
+        os.dup2(self.prevfd, self.prev.fileno())
+        sys.stdout = self.prev
+        self.tmpfile.close()
+        
+    def getOutput(self):
+        self.tmpfile.seek(0)
+        return self.tmpfile.read()
+    
+    def getOutputExpected(self, expected_lines):
+        out = ""
+        for l in expected_lines:
+            out = out + l + "\n"
+        return out
+
+    def test_001_complete_bursts_prefix (self):
+        """
+            Complete bursts, without any prefix
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046]
+        timeslots_input = [2, 2, 2, 2]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        expected_lines = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern(""), False, False, False, False)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+        
+    def test_002_complete_bursts_prefix (self):
+        """
+            Complete bursts, with a string prefix
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046]
+        timeslots_input = [2, 2, 2, 2]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        expected_lines = [
+            "Test 0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "Test 0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "Test 0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "Test 0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern("Test "), False, False, False, False)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+
+    def test_003_complete_bursts_fnr (self):
+        """
+            Complete bursts, no prefix, with frame number
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046]
+        timeslots_input = [2, 2, 2, 2]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        expected_lines = [
+            "2569043: 0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "2569044: 0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "2569045: 0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "2569046: 0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern(""), True, False, False, False)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+        
+    def test_004_complete_bursts_fcount (self):
+        """
+            Complete bursts, no prefix, with frame count
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046]
+        timeslots_input = [2, 2, 2, 2]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        expected_lines = [
+            "3967625: 0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "3967658: 0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "3967691: 0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "3967724: 0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern(""), False, True, False, False)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+
+    def test_005_complete_bursts_fnr_fcount (self):
+        """
+            Complete bursts, no prefix, with frame number and frame count
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046]
+        timeslots_input = [2, 2, 2, 2]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        expected_lines = [
+            "2569043 3967625: 0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "2569044 3967658: 0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "2569045 3967691: 0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "2569046 3967724: 0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern(""), True, True, False, False)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+
+    def test_006_payload_prefix_fnr_fcount (self):
+        """
+            Payload only, no prefix, with frame number and frame count
+            Bursts 4-7 are dummy bursts
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046, 1099602, 1099603, 1099604, 1099605]
+        timeslots_input = [2, 2, 2, 2, 4, 4, 4, 4]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000"
+            
+        ]
+        
+        expected_lines = [
+            "test_006: 2569043 3967625: 110000001001001111011111001111100000000101000111100000000100101101010000001111010100010110111101011101011100000101",
+            "test_006: 2569044 3967658: 100010111110111111000001010000101101111101011111010101110110110111101101111110000011011010111011111001011101000011",
+            "test_006: 2569045 3967691: 000100001111011111010101100100011000000000011011010110001001010100101011111001000111100000100000111111000000101110",
+            "test_006: 2569046 3967724: 110101011111001000101011010110000001110110001111111010010111000000001010010111001111111011001000000001001000011101",
+            "test_006: 1099602 1699146: 111110110111011000001010010011100000100100010000000111110111010010100011001100111001111010011111000100101111101010",
+            "test_006: 1099603 1699179: 111110110111011000001010010011100000100100010000000111110111010010100011001100111001111010011111000100101111101010",
+            "test_006: 1099604 1699212: 111110110111011000001010010011100000100100010000000111110111010010100011001100111001111010011111000100101111101010",
+            "test_006: 1099605 1699245: 111110110111011000001010010011100000100100010000000111110111010010100011001100111001111010011111000100101111101010"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern("test_006: "), True, True, True, False)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+
+    def test_007_payload_prefix_fnr_fcount (self):
+        """
+            Payload only, no prefix, with frame number, frame count, and ignoring dummy bursts
+            Bursts 4-7 are dummy bursts
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046, 1099602, 1099603, 1099604, 1099605]
+        timeslots_input = [2, 2, 2, 2, 4, 4, 4, 4]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000"
+            
+        ]
+        
+        expected_lines = [
+            "test_007: 2569043 3967625: 110000001001001111011111001111100000000101000111100000000100101101010000001111010100010110111101011101011100000101",
+            "test_007: 2569044 3967658: 100010111110111111000001010000101101111101011111010101110110110111101101111110000011011010111011111001011101000011",
+            "test_007: 2569045 3967691: 000100001111011111010101100100011000000000011011010110001001010100101011111001000111100000100000111111000000101110",
+            "test_007: 2569046 3967724: 110101011111001000101011010110000001110110001111111010010111000000001010010111001111111011001000000001001000011101"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern("test_007: "), True, True, True, True)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+        
+    def test_008_complete_prefix_fnr_fcount (self):
+        """
+            Complete bursts, no prefix, with frame number, frame count, and ignoring dummy bursts
+            Bursts 4-7 are dummy bursts
+        """
+        framenumbers_input = [2569043, 2569044, 2569045, 2569046, 1099602, 1099603, 1099604, 1099605]
+        timeslots_input = [2, 2, 2, 2, 4, 4, 4, 4]
+        bursts_input = [
+            "0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000"
+            
+        ]
+        
+        expected_lines = [
+            "test_008: 2569043 3967625: 0001100000010010011110111110011111000000001010001111000000001000110101110010000011010111100101101010000001111010100010110111101011101011100000101000",
+            "test_008: 2569044 3967658: 0001000101111101111110000010100001011011111010111110101011101000110101110010000011010111110110111101101111110000011011010111011111001011101000011000",
+            "test_008: 2569045 3967691: 0000001000011110111110101011001000110000000000110110101100011000110101110010000011010111001010100101011111001000111100000100000111111000000101110000",
+            "test_008: 2569046 3967724: 0001101010111110010001010110101100000011101100011111110100101000110101110010000011010111111000000001010010111001111111011001000000001001000011101000"
+        ]
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        printer = grgsm.bursts_printer(pmt.intern("test_008: "), True, True, False, True)
+        self.tb.msg_connect(src, "out", printer, "bursts")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(expected_lines))
+
+
+if __name__ == '__main__':
+    gr_unittest.run(qa_burst_printer, "qa_burst_printer.xml")
diff --git a/python/qa_burst_sdcch_subslot_splitter.py b/python/qa_burst_sdcch_subslot_splitter.py
new file mode 100755
index 0000000..ff30c2b
--- /dev/null
+++ b/python/qa_burst_sdcch_subslot_splitter.py
@@ -0,0 +1,401 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Roman Khassraf <rkhassraf@gmail.com>
+# @section LICENSE
+# 
+# Gr-gsm is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# Gr-gsm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with gr-gsm; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+# 
+
+from gnuradio import gr, gr_unittest, blocks
+import grgsm
+import pmt
+
+class qa_burst_sdcch_subslot_splitter (gr_unittest.TestCase):
+    # 102 random bursts as test input
+    bursts_input = [
+        '0000111100101011111011010010011001000100001001110110000110110001011011101111000100101111111000110000001111111111000111100100011111010100010011111000',
+        '0001111110000000110110101010001000101000001101111100101100110010001111011010001000111100001010011101000111010111000100000111001111110011000011011000',
+        '0001101110111011011011011010000001011011001011000100100110010101001111101100010100111110110011001100100011111010110111011001000111101011100001111000',
+        '0000001011100110100011110111010101111000011111001011010011110000110101110010000011010110010011111001000110001111111010111011011001101010001100110000',
+        '0001011001110011011101111111100110110111011101001110111110000101001111101100010100111110001111100000000110001000010000010111111011110101100000111000',
+        '0001110110011011010011100010101010000100011000001111110101111101001111101100010100111110100001001101000100000001011001010110011111100010001111001000',
+        '0001101100101101011110011001110110011100001100100100100110000010001111011010001000111101101101001100100001110001011001000001100000011111101000011000',
+        '0000101100001011101001010001111001000000010100000111100110101000110101110010000011010110110000110010100011001111101101101001110111101001000011111000',
+        '0000011011010111011111101100010100110110000001100011100001010001011011101111000100101110001110000011001100100101111000001010000101010000110101110000',
+        '0000111100110111001011010100010010110100101010000000010001110010011101011000001001110100001010011111111111001010111010111010001111111101111110101000',
+        '0000111101101110011111010100010100110001101110001001111100100101001111101100010100111111100010010001001100000000111010001000100011010000110111110000',
+        '0000011100010011111011011001110010011000001111111110101000100000110101110010000011010111101011000100101011000011011011110000010001100110011010001000',
+        '0000011011100100011101000010111010101101001111110000110001111010000111011101001000011101111110101010000011100100111101000111101110011011001001100000',
+        '0000110100110111001010100011100010101001001010011001001111001001001011100001000100101111001001100100001111100111000101110111100011101100110100010000',
+        '0000011101101000110111010010111001011110101000001011111000101010000111011101001000011100100100010110101110101010001000011001001110100001000101001000',
+        '0000101000110000011100111010101000001101000111111101100100110010011101011000001001110101001101110101011110010100101010001110100001100010101000001000',
+        '0000100010110110000111101001011000001010011110000100111101111010011101011000001001110101100010000111010100001000110001110001111101010100100101010000',
+        '0000010110111011011100011101010001001011001110100011100001000101001111101100010100111110100100110001110011001011110001100000000100100111000011111000',
+        '0001101110100101110101100101011101111100111010101011110001101010000111011101001000011100100010100111110110111001001000100111110111100100010010111000',
+        '0000111000101011011101110110001110101111100010100000110111110010000111011101001000011101111011000101010100011111001000010000110101101110000010101000',
+        '0001001010011001111011001110100001000110010111110011111001000010011101011000001001110100001101000101010010001101001010111100100101010101011100110000',
+        '0000100010001111101111100100010010100000010111001011101101001000110101110010000011010110110011100111001001100101011010100101110011100001110010001000',
+        '0000100100010010111100111000011000001100100001110101110011011001011011101111000100101111001011000000010111001011110011000000001101100001001000100000',
+        '0001010000110010100010110111101111100100000011111000000010111010011101011000001001110101111100000011101010001010100001101000011010110000001001111000',
+        '0001101101111011000010001000000010001110101111001111111111110001011011101111000100101110110001011010110110100111000000010010101110111001111011000000',
+        '0001101000100010100001101100100101011100111000001101001010100010011101011000001001110100011100101100000010110101011011100111111011111101100000011000',
+        '0001010110101101110000011111101100001000001001110101100000011010001111011010001000111100000100110001111110110111010101011011011100111000101111010000',
+        '0000010000111000010001010010111110000100011000000101110110001000110101110010000011010111001100010011100001111101000101011110100001100010010110001000',
+        '0000011110101100001001101000001010010100100111101101101000110101001111101100010100111111011001110000011000100001010011100000001100010110101001001000',
+        '0001110111101011100000001011111101100110110001001100101111110010000111011101001000011101110010001111000010011110001101101111101011100001001100100000',
+        '0001111110100011001100101111001001101000101110011100011000100001001011100001000100101110000110110010111111110101000110001011010110011010100011001000',
+        '0001011100010110000001011011001100000101010000011010001000111111011110001001011101111001101111000011111110011001000010000011000101100011111001010000',
+        '0001110111001111101101110111110000001110111011011100110110001001001011100001000100101110100101001001000110101110111110100110100100111111011001011000',
+        '0001011111010100110010101100011000100011000011111000111100010101001111101100010100111111100110001110010110001110000101110000100101010111100100111000',
+        '0001000100110100001010000101011001010000001111001110011010001001001011100001000100101111100011000100111100100010111001010010110100010000110000110000',
+        '0001001100101001010111000101000101000000111101011111000001011010001111011010001000111100110110011000000011010000100110111101110011110011000011010000',
+        '0001011010100110110011000101111111010011110001101000011100101000110101110010000011010110110100000111011101000001101010100001110111001011010101111000',
+        '0000101010001100010011010101011110010101101110011110100110001010001111011010001000111100000010011011100001010001001111111100011111000011001010011000',
+        '0000111001011100101100111001010101000101010111011110111101010001001011100001000100101111100010100101111011000101100000101111000101011110011111100000',
+        '0000010101101111011001100001011100100101001000110111010110001111011110001001011101111000011010010010101111010000110000011001101011100000111110000000',
+        '0001000001011000010001000100100111110011001101111100010011110010011101011000001001110100110100101101100011010111101110110010101101001110001101010000',
+        '0000101000011101110011111001010011111001001010010000101110010001011011101111000100101111011111110000000100000110011001000100110000111001100000011000',
+        '0000100101010011010110101001100100110001011010111110110100011101001111101100010100111110111000110110100011001010110011000111011111110011001011100000',
+        '0001000110100001111010110101011111001000011100001111010110001001011011101111000100101111100001011001100110011001110101100001000001011011111110100000',
+        '0001011010100110001000100000001110010000011000111001001110000001001011100001000100101110011011011001000111101010001010111001101100000100001101001000',
+        '0000001010000101101010000000110000010101111011100110101000110111011110001001011101111001100011100100100100100000010010001111101111110011000001011000',
+        '0000000111000111010110000000001001101110001001001101100110010001011011101111000100101111101011111100101001110100101000011100111001001101101011101000',
+        '0000100100010111010011100110101011011010001011011011011101110010001111011010001000111100000110010111001010011100000011111100111000100100101010110000',
+        '0000101111000000100110100001011000000011111111010101010011011010000111011101001000011101110010101101000100100000001100001000100111001010010000111000',
+        '0000001001001101110111111011010011000011100001100011110011010001001011100001000100101110011100000010010111101100101011011111101011000000001100101000',
+        '0001100111010111011000100111110000111010111001011100011111000000110101110010000011010111001000000010000010011010111001111001011011011111110101011000',
+        '0000100010110111011001100110110010101011011110101001010001000001011011101111000100101111010101100010101110101111111011101000010111001111000101001000',
+        '0001110000101111100101001101001111101011000000011011000101111000110101110010000011010111111100111011111000000001010111001100110100100011010000011000',
+        '0000011000101001110100000000110101011101011010001101110110111001011011101111000100101111110110101011110110100111000000000011110011101000011000001000',
+        '0000101001000100101010001110110111010000011011001011101010010111011110001001011101111001111010110101100100101001111000100000010001000110000000110000',
+        '0000000111100101111111000110011101000110010110001110100101110001011011101111000100101110100010010011100010010001110100010101101101100111100110101000',
+        '0001000011111010000000011010011001010010011111000011110111010010001111011010001000111101101110111000011010001010100111011000001000110000101000000000',
+        '0001101000110010011001001110101101111110000111001101100110011001001011100001000100101110000101000111011001110001100011011101101000101001001001101000',
+        '0001100111010000101101001110010001001001011000011000001011001010011101011000001001110101101110110101111101110010010010000001000100011111010100011000',
+        '0001001101011001110000101110011110100001001000001111000100001001001011100001000100101110100010110100111010110010011000100111000100111111011000101000',
+        '0001001101010000111101110111111011000100101011011001110001001010011101011000001001110101000000011110001101001010110001100011000110100010011010000000',
+        '0000100100011000011010111010110001000101111010001001010110100001011011101111000100101111100001000101011111111110000011111111100110100100110000111000',
+        '0001011101111100011001100110010001000101100001001001000010110001011011101111000100101110101100111111101111111001110110100101000011100110000001011000',
+        '0001101000100100101011000001001101111011100110101010001110100010000111011101001000011101101101011111110001110001010000001111100110111101101000100000',
+        '0000010101011110000000010011100010101011101111011001100111001010001111011010001000111100010001101011101000101100010110100100001101010110010111000000',
+        '0001100011011000111011100010111111000000011111101010000010110001011011101111000100101111010100100110010000001010100011100001111011110010001011001000',
+        '0001001011000011010010000001001110110110010101010011000101001000110101110010000011010111010010011000110011000110000101111000010100001000011111111000',
+        '0000010100100110100110001010001011011000110000101011000001110001001011100001000100101111101010000111110111011010101010001100101100010100001000010000',
+        '0001101100111011110100000010111000000110111101001110111110111010011101011000001001110101011110110010010011001011001110101001101010101001011000010000',
+        '0001100011110111001100101110010110000110101101101111101101111001011011101111000100101111110001100010010000011100010000011011100010100111101001110000',
+        '0001010011010010101001001000100111111010011101011001110110010001011011101111000100101111111010111010010001100100101100011000100110011001101101000000',
+        '0000111011001001001100100100100101011111011100110101011100010010011101011000001001110101010100111100111001000001100010100111100001010011111111111000',
+        '0001100101110101101110111111000100110000001111010000100001011101001111101100010100111110111111110111000010011100101001111011010100001010001010001000',
+        '0000001000011111101111110000000000001100011111011010111010000111011110001001011101111001001100000001010100111111011000000110010111101001110010011000',
+        '0000100000011100011111001001001000001000100010010111101011101010011101011000001001110100000000010010011001110100101111001110111111010000010001000000',
+        '0001000101001011001111111101010111110010010110111111110000010001011011101111000100101111000100010000111110011101000001111100001001100100011100011000',
+        '0001101101101010110000001001110111001001000001110110110000110001001011100001000100101111100001110001000000110101100001111111001001111001101101100000',
+        '0000110011100000100000000010100100011001001000110010110101111001001011100001000100101110000111001100111111110011011001000001001000001111001101001000',
+        '0001001111100001110110001010100011100011110011100001010100001001001011100001000100101111001000101100111101001010111000010111101000000001101100101000',
+        '0000101001000010000001100001000011001010100011110111101110111001001011100001000100101110001010100101111010111000000010111011000010011001101000001000',
+        '0001101000000100110100110001010111010111111001101110110101100111011110001001011101111001000110010011100100000100011101110110111010001001000111101000',
+        '0000100000100110011100101001110010011011100010101101111001110010001111011010001000111101100000111011110010010111001100100010000101111111011101110000',
+        '0000100111111010101000001110100011010010010010100001011010110000110101110010000011010110011000111000111111000100001010010000011011001000011100110000',
+        '0001110110111100101101010011111100101100100100110001110110111001001011100001000100101110010111011011100001001010010100010101110100011111010101001000',
+        '0000111001001000110010011110000010011101000001010111011011111010011101011000001001110101011101101100101110010111010001100100000011100100111101010000',
+        '0001000001010011101010101011111100010010101110100001000111110010011101011000001001110101100000100101011101111101101101111000001101101010001000101000',
+        '0001101000001011010011001010011010100110010100011010101101011010000111011101001000011101100010011011111111101011100110000011110110001111000101101000',
+        '0000001010101101011001000000001000001001110100000111000000101001001011100001000100101110111111011101110101010011001110111111101001011010110000101000',
+        '0001011110101111110100110010010110011100111010011001001110011111011110001001011101111000101010001111000111000101111000100011100010100010010100010000',
+        '0001000001011110010010100001100010111111000111001111010101011111011110001001011101111001010010100101110110111111001111110010111100111010110011110000',
+        '0001111100100010101100010111000000011011001111001101101001000010001111011010001000111101111000000101111001110101101001101010001110100111101011001000',
+        '0000000011001001101001100111101011001011000100101100101001100010001111011010001000111101100100101001010100111000010001011000100110010101010111000000',
+        '0001111000011111011100011010110000000010000000100000111000100010011101011000001001110100011101011101001001000111011101100001011010101000011011011000',
+        '0001011000010101011100101011111010110101011110011011001011010010001111011010001000111100110111000110100100001100110100000001100100100111101010011000',
+        '0001010101101101101001011100101001110000100101011110100011100010011101011000001001110100111100001000000111000001111100011011101000101100111100111000',
+        '0000010101001010001110001001101101011011000110011011110111111000110101110010000011010110000000110010100100111001010110110011011101011001110100100000',
+        '0001111111000101100000111010111010011010011110110010111000010101001111101100010100111110000110010011101101011111001000010001111111000111001111011000',
+        '0000100101100011001010101100011110000111001110010010010000100001011011101111000100101110001111010000001000001101011010110101010111011011001101101000',
+        '0000110000111101100001011100100011101011011000111100001000000111011110001001011101111000111000000111100100101000000101100011011001111100110011110000',
+        '0000011001111001100111110110110000001111110101011110100011010010011101011000001001110101001101110111111100001001000101101101100110001111101011010000',
+        '0000100001011010001010000101110000111100011110110010000010101000110101110010000011010111010001010101111111111101101100110101111010110100001110101000',
+        '0000000111101000111001101101110011001100100000101111001011001111011110001001011101111001010011110001010010000011001100100001011001111010101011011000'
+    ]
+
+    # 102 sequential framenumbers
+    framenumbers_input = [879852, 879853, 879854, 879855, 879856, 879857, 879858, 879859, 879860, 879861, 879862, 879863, 879864, 879865, 879866, 879867, 879868, 879869, 879870, 879871, 879872, 879873, 879874, 879875, 879876, 879877, 879878, 879879, 879880, 879881, 879882, 879883, 879884, 879885, 879886, 879887, 879888, 879889, 879890, 879891, 879892, 879893, 879894, 879895, 879896, 879897, 879898, 879899, 879900, 879901, 879902, 879903, 879904, 879905, 879906, 879907, 879908, 879909, 879910, 879911, 879912, 879913, 879914, 879915, 879916, 879917, 879918, 879919, 879920, 879921, 879922, 879923, 879924, 879925, 879926, 879927, 879928, 879929, 879930, 879931, 879932, 879933, 879934, 879935, 879936, 879937, 879938, 879939, 879940, 879941, 879942, 879943, 879944, 879945, 879946, 879947, 879948, 879949, 879950, 879951, 879952, 879953]
+    
+    timeslots_input = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+    
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+
+    def test_001_sdcch8 (self):
+
+        bursts_expected_0 = [
+            '0000111100101011111011010010011001000100001001110110000110110001011011101111000100101111111000110000001111111111000111100100011111010100010011111000',
+            '0001111110000000110110101010001000101000001101111100101100110010001111011010001000111100001010011101000111010111000100000111001111110011000011011000',
+            '0001101110111011011011011010000001011011001011000100100110010101001111101100010100111110110011001100100011111010110111011001000111101011100001111000',
+            '0000001011100110100011110111010101111000011111001011010011110000110101110010000011010110010011111001000110001111111010111011011001101010001100110000',
+            '0001110111001111101101110111110000001110111011011100110110001001001011100001000100101110100101001001000110101110111110100110100100111111011001011000',
+            '0001011111010100110010101100011000100011000011111000111100010101001111101100010100111111100110001110010110001110000101110000100101010111100100111000',
+            '0001000100110100001010000101011001010000001111001110011010001001001011100001000100101111100011000100111100100010111001010010110100010000110000110000',
+            '0001001100101001010111000101000101000000111101011111000001011010001111011010001000111100110110011000000011010000100110111101110011110011000011010000',
+            '0000100010110111011001100110110010101011011110101001010001000001011011101111000100101111010101100010101110101111111011101000010111001111000101001000',
+            '0001110000101111100101001101001111101011000000011011000101111000110101110010000011010111111100111011111000000001010111001100110100100011010000011000',
+            '0000011000101001110100000000110101011101011010001101110110111001011011101111000100101111110110101011110110100111000000000011110011101000011000001000',
+            '0000101001000100101010001110110111010000011011001011101010010111011110001001011101111001111010110101100100101001111000100000010001000110000000110000',
+        ]
+        
+        bursts_expected_1 = [
+            '0001011001110011011101111111100110110111011101001110111110000101001111101100010100111110001111100000000110001000010000010111111011110101100000111000',
+            '0001110110011011010011100010101010000100011000001111110101111101001111101100010100111110100001001101000100000001011001010110011111100010001111001000',
+            '0001101100101101011110011001110110011100001100100100100110000010001111011010001000111101101101001100100001110001011001000001100000011111101000011000',
+            '0000101100001011101001010001111001000000010100000111100110101000110101110010000011010110110000110010100011001111101101101001110111101001000011111000',
+            '0001011010100110110011000101111111010011110001101000011100101000110101110010000011010110110100000111011101000001101010100001110111001011010101111000',
+            '0000101010001100010011010101011110010101101110011110100110001010001111011010001000111100000010011011100001010001001111111100011111000011001010011000',
+            '0000111001011100101100111001010101000101010111011110111101010001001011100001000100101111100010100101111011000101100000101111000101011110011111100000',
+            '0000010101101111011001100001011100100101001000110111010110001111011110001001011101111000011010010010101111010000110000011001101011100000111110000000',
+            '0000000111100101111111000110011101000110010110001110100101110001011011101111000100101110100010010011100010010001110100010101101101100111100110101000',
+            '0001000011111010000000011010011001010010011111000011110111010010001111011010001000111101101110111000011010001010100111011000001000110000101000000000',
+            '0001101000110010011001001110101101111110000111001101100110011001001011100001000100101110000101000111011001110001100011011101101000101001001001101000',
+            '0001100111010000101101001110010001001001011000011000001011001010011101011000001001110101101110110101111101110010010010000001000100011111010100011000',
+        ]
+        
+        bursts_expected_2 = [
+            '0000011011010111011111101100010100110110000001100011100001010001011011101111000100101110001110000011001100100101111000001010000101010000110101110000',
+            '0000111100110111001011010100010010110100101010000000010001110010011101011000001001110100001010011111111111001010111010111010001111111101111110101000',
+            '0000111101101110011111010100010100110001101110001001111100100101001111101100010100111111100010010001001100000000111010001000100011010000110111110000',
+            '0000011100010011111011011001110010011000001111111110101000100000110101110010000011010111101011000100101011000011011011110000010001100110011010001000',
+            '0001000001011000010001000100100111110011001101111100010011110010011101011000001001110100110100101101100011010111101110110010101101001110001101010000',
+            '0000101000011101110011111001010011111001001010010000101110010001011011101111000100101111011111110000000100000110011001000100110000111001100000011000',
+            '0000100101010011010110101001100100110001011010111110110100011101001111101100010100111110111000110110100011001010110011000111011111110011001011100000',
+            '0001000110100001111010110101011111001000011100001111010110001001011011101111000100101111100001011001100110011001110101100001000001011011111110100000',
+            '0001001101011001110000101110011110100001001000001111000100001001001011100001000100101110100010110100111010110010011000100111000100111111011000101000',
+            '0001001101010000111101110111111011000100101011011001110001001010011101011000001001110101000000011110001101001010110001100011000110100010011010000000',
+            '0000100100011000011010111010110001000101111010001001010110100001011011101111000100101111100001000101011111111110000011111111100110100100110000111000',
+            '0001011101111100011001100110010001000101100001001001000010110001011011101111000100101110101100111111101111111001110110100101000011100110000001011000',
+
+        ]
+        
+        bursts_expected_3 = [
+            '0000011011100100011101000010111010101101001111110000110001111010000111011101001000011101111110101010000011100100111101000111101110011011001001100000',
+            '0000110100110111001010100011100010101001001010011001001111001001001011100001000100101111001001100100001111100111000101110111100011101100110100010000',
+            '0000011101101000110111010010111001011110101000001011111000101010000111011101001000011100100100010110101110101010001000011001001110100001000101001000',
+            '0000101000110000011100111010101000001101000111111101100100110010011101011000001001110101001101110101011110010100101010001110100001100010101000001000',
+            '0001011010100110001000100000001110010000011000111001001110000001001011100001000100101110011011011001000111101010001010111001101100000100001101001000',
+            '0000001010000101101010000000110000010101111011100110101000110111011110001001011101111001100011100100100100100000010010001111101111110011000001011000',
+            '0000000111000111010110000000001001101110001001001101100110010001011011101111000100101111101011111100101001110100101000011100111001001101101011101000',
+            '0000100100010111010011100110101011011010001011011011011101110010001111011010001000111100000110010111001010011100000011111100111000100100101010110000',
+            '0001101000100100101011000001001101111011100110101010001110100010000111011101001000011101101101011111110001110001010000001111100110111101101000100000',
+            '0000010101011110000000010011100010101011101111011001100111001010001111011010001000111100010001101011101000101100010110100100001101010110010111000000',
+            '0001100011011000111011100010111111000000011111101010000010110001011011101111000100101111010100100110010000001010100011100001111011110010001011001000',
+            '0001001011000011010010000001001110110110010101010011000101001000110101110010000011010111010010011000110011000110000101111000010100001000011111111000',
+        ]
+        
+        bursts_expected_4 = [
+            '0000100010110110000111101001011000001010011110000100111101111010011101011000001001110101100010000111010100001000110001110001111101010100100101010000',
+            '0000010110111011011100011101010001001011001110100011100001000101001111101100010100111110100100110001110011001011110001100000000100100111000011111000',
+            '0001101110100101110101100101011101111100111010101011110001101010000111011101001000011100100010100111110110111001001000100111110111100100010010111000',
+            '0000111000101011011101110110001110101111100010100000110111110010000111011101001000011101111011000101010100011111001000010000110101101110000010101000',
+            '0000010100100110100110001010001011011000110000101011000001110001001011100001000100101111101010000111110111011010101010001100101100010100001000010000',
+            '0001101100111011110100000010111000000110111101001110111110111010011101011000001001110101011110110010010011001011001110101001101010101001011000010000',
+            '0001100011110111001100101110010110000110101101101111101101111001011011101111000100101111110001100010010000011100010000011011100010100111101001110000',
+            '0001010011010010101001001000100111111010011101011001110110010001011011101111000100101111111010111010010001100100101100011000100110011001101101000000',
+            '0001110110111100101101010011111100101100100100110001110110111001001011100001000100101110010111011011100001001010010100010101110100011111010101001000',
+            '0000111001001000110010011110000010011101000001010111011011111010011101011000001001110101011101101100101110010111010001100100000011100100111101010000',
+            '0001000001010011101010101011111100010010101110100001000111110010011101011000001001110101100000100101011101111101101101111000001101101010001000101000',
+            '0001101000001011010011001010011010100110010100011010101101011010000111011101001000011101100010011011111111101011100110000011110110001111000101101000',        
+        ]
+        
+        bursts_expected_5 = [
+            '0001001010011001111011001110100001000110010111110011111001000010011101011000001001110100001101000101010010001101001010111100100101010101011100110000',
+            '0000100010001111101111100100010010100000010111001011101101001000110101110010000011010110110011100111001001100101011010100101110011100001110010001000',
+            '0000100100010010111100111000011000001100100001110101110011011001011011101111000100101111001011000000010111001011110011000000001101100001001000100000',
+            '0001010000110010100010110111101111100100000011111000000010111010011101011000001001110101111100000011101010001010100001101000011010110000001001111000',
+            '0000111011001001001100100100100101011111011100110101011100010010011101011000001001110101010100111100111001000001100010100111100001010011111111111000',
+            '0001100101110101101110111111000100110000001111010000100001011101001111101100010100111110111111110111000010011100101001111011010100001010001010001000',
+            '0000001000011111101111110000000000001100011111011010111010000111011110001001011101111001001100000001010100111111011000000110010111101001110010011000',
+            '0000100000011100011111001001001000001000100010010111101011101010011101011000001001110100000000010010011001110100101111001110111111010000010001000000',
+            '0000001010101101011001000000001000001001110100000111000000101001001011100001000100101110111111011101110101010011001110111111101001011010110000101000',
+            '0001011110101111110100110010010110011100111010011001001110011111011110001001011101111000101010001111000111000101111000100011100010100010010100010000',
+            '0001000001011110010010100001100010111111000111001111010101011111011110001001011101111001010010100101110110111111001111110010111100111010110011110000',
+            '0001111100100010101100010111000000011011001111001101101001000010001111011010001000111101111000000101111001110101101001101010001110100111101011001000',
+        ]
+        
+        bursts_expected_6 = [
+            '0001101101111011000010001000000010001110101111001111111111110001011011101111000100101110110001011010110110100111000000010010101110111001111011000000',
+            '0001101000100010100001101100100101011100111000001101001010100010011101011000001001110100011100101100000010110101011011100111111011111101100000011000',
+            '0001010110101101110000011111101100001000001001110101100000011010001111011010001000111100000100110001111110110111010101011011011100111000101111010000',
+            '0000010000111000010001010010111110000100011000000101110110001000110101110010000011010111001100010011100001111101000101011110100001100010010110001000',
+            '0001000101001011001111111101010111110010010110111111110000010001011011101111000100101111000100010000111110011101000001111100001001100100011100011000',
+            '0001101101101010110000001001110111001001000001110110110000110001001011100001000100101111100001110001000000110101100001111111001001111001101101100000',
+            '0000110011100000100000000010100100011001001000110010110101111001001011100001000100101110000111001100111111110011011001000001001000001111001101001000',
+            '0001001111100001110110001010100011100011110011100001010100001001001011100001000100101111001000101100111101001010111000010111101000000001101100101000',
+            '0000000011001001101001100111101011001011000100101100101001100010001111011010001000111101100100101001010100111000010001011000100110010101010111000000',
+            '0001111000011111011100011010110000000010000000100000111000100010011101011000001001110100011101011101001001000111011101100001011010101000011011011000',
+            '0001011000010101011100101011111010110101011110011011001011010010001111011010001000111100110111000110100100001100110100000001100100100111101010011000',
+            '0001010101101101101001011100101001110000100101011110100011100010011101011000001001110100111100001000000111000001111100011011101000101100111100111000',
+        ]
+        
+        bursts_expected_7 = [
+            '0000011110101100001001101000001010010100100111101101101000110101001111101100010100111111011001110000011000100001010011100000001100010110101001001000',
+            '0001110111101011100000001011111101100110110001001100101111110010000111011101001000011101110010001111000010011110001101101111101011100001001100100000',
+            '0001111110100011001100101111001001101000101110011100011000100001001011100001000100101110000110110010111111110101000110001011010110011010100011001000',
+            '0001011100010110000001011011001100000101010000011010001000111111011110001001011101111001101111000011111110011001000010000011000101100011111001010000',
+            '0000101001000010000001100001000011001010100011110111101110111001001011100001000100101110001010100101111010111000000010111011000010011001101000001000',
+            '0001101000000100110100110001010111010111111001101110110101100111011110001001011101111001000110010011100100000100011101110110111010001001000111101000',
+            '0000100000100110011100101001110010011011100010101101111001110010001111011010001000111101100000111011110010010111001100100010000101111111011101110000',
+            '0000100111111010101000001110100011010010010010100001011010110000110101110010000011010110011000111000111111000100001010010000011011001000011100110000',
+            '0000010101001010001110001001101101011011000110011011110111111000110101110010000011010110000000110010100100111001010110110011011101011001110100100000',
+            '0001111111000101100000111010111010011010011110110010111000010101001111101100010100111110000110010011101101011111001000010001111111000111001111011000',
+            '0000100101100011001010101100011110000111001110010010010000100001011011101111000100101110001111010000001000001101011010110101010111011011001101101000',
+            '0000110000111101100001011100100011101011011000111100001000000111011110001001011101111000111000000111100100101000000101100011011001111100110011110000',
+        ]
+
+        src = grgsm.burst_source(self.framenumbers_input, self.timeslots_input, self.bursts_input)
+        splitter = grgsm.burst_sdcch_subslot_splitter(grgsm.SPLITTER_SDCCH8)
+        sink_0 = grgsm.burst_sink()
+        sink_1 = grgsm.burst_sink()
+        sink_2 = grgsm.burst_sink()
+        sink_3 = grgsm.burst_sink()
+        sink_4 = grgsm.burst_sink()
+        sink_5 = grgsm.burst_sink()
+        sink_6 = grgsm.burst_sink()
+        sink_7 = grgsm.burst_sink()
+
+        self.tb.msg_connect(src, "out", splitter, "in")
+        self.tb.msg_connect(splitter, "out0", sink_0, "in")
+        self.tb.msg_connect(splitter, "out1", sink_1, "in")
+        self.tb.msg_connect(splitter, "out2", sink_2, "in")
+        self.tb.msg_connect(splitter, "out3", sink_3, "in")
+        self.tb.msg_connect(splitter, "out4", sink_4, "in")
+        self.tb.msg_connect(splitter, "out5", sink_5, "in")
+        self.tb.msg_connect(splitter, "out6", sink_6, "in")
+        self.tb.msg_connect(splitter, "out7", sink_7, "in")
+
+        self.tb.run ()
+
+        bursts_result_0 = list(sink_0.get_burst_data())
+        bursts_result_1 = list(sink_1.get_burst_data())
+        bursts_result_2 = list(sink_2.get_burst_data())
+        bursts_result_3 = list(sink_3.get_burst_data())
+        bursts_result_4 = list(sink_4.get_burst_data())
+        bursts_result_5 = list(sink_5.get_burst_data())
+        bursts_result_6 = list(sink_6.get_burst_data())
+        bursts_result_7 = list(sink_7.get_burst_data())
+                
+        self.assertEqual(bursts_expected_0, bursts_result_0)
+        self.assertEqual(bursts_expected_1, bursts_result_1)
+        self.assertEqual(bursts_expected_2, bursts_result_2)
+        self.assertEqual(bursts_expected_3, bursts_result_3)
+        self.assertEqual(bursts_expected_4, bursts_result_4)
+        self.assertEqual(bursts_expected_5, bursts_result_5)
+        self.assertEqual(bursts_expected_6, bursts_result_6)
+        self.assertEqual(bursts_expected_7, bursts_result_7)
+
+
+    def test_002_sdcch4 (self):
+
+        bursts_expected_0 = [
+            '0000100100010010111100111000011000001100100001110101110011011001011011101111000100101111001011000000010111001011110011000000001101100001001000100000',
+            '0001010000110010100010110111101111100100000011111000000010111010011101011000001001110101111100000011101010001010100001101000011010110000001001111000',
+            '0001101101111011000010001000000010001110101111001111111111110001011011101111000100101110110001011010110110100111000000010010101110111001111011000000',
+            '0001101000100010100001101100100101011100111000001101001010100010011101011000001001110100011100101100000010110101011011100111111011111101100000011000',
+            '0000100101010011010110101001100100110001011010111110110100011101001111101100010100111110111000110110100011001010110011000111011111110011001011100000',
+            '0001000110100001111010110101011111001000011100001111010110001001011011101111000100101111100001011001100110011001110101100001000001011011111110100000',
+            '0001011010100110001000100000001110010000011000111001001110000001001011100001000100101110011011011001000111101010001010111001101100000100001101001000',
+            '0000001010000101101010000000110000010101111011100110101000110111011110001001011101111001100011100100100100100000010010001111101111110011000001011000',
+            '0000001000011111101111110000000000001100011111011010111010000111011110001001011101111001001100000001010100111111011000000110010111101001110010011000',
+            '0000100000011100011111001001001000001000100010010111101011101010011101011000001001110100000000010010011001110100101111001110111111010000010001000000',
+            '0001000101001011001111111101010111110010010110111111110000010001011011101111000100101111000100010000111110011101000001111100001001100100011100011000',
+            '0001101101101010110000001001110111001001000001110110110000110001001011100001000100101111100001110001000000110101100001111111001001111001101101100000',
+        ]
+        
+        bursts_expected_1 = [
+            '0001010110101101110000011111101100001000001001110101100000011010001111011010001000111100000100110001111110110111010101011011011100111000101111010000',
+            '0000010000111000010001010010111110000100011000000101110110001000110101110010000011010111001100010011100001111101000101011110100001100010010110001000',
+            '0000011110101100001001101000001010010100100111101101101000110101001111101100010100111111011001110000011000100001010011100000001100010110101001001000',
+            '0001110111101011100000001011111101100110110001001100101111110010000111011101001000011101110010001111000010011110001101101111101011100001001100100000',
+            '0000000111000111010110000000001001101110001001001101100110010001011011101111000100101111101011111100101001110100101000011100111001001101101011101000',
+            '0000100100010111010011100110101011011010001011011011011101110010001111011010001000111100000110010111001010011100000011111100111000100100101010110000',
+            '0000101111000000100110100001011000000011111111010101010011011010000111011101001000011101110010101101000100100000001100001000100111001010010000111000',
+            '0000001001001101110111111011010011000011100001100011110011010001001011100001000100101110011100000010010111101100101011011111101011000000001100101000',
+            '0000110011100000100000000010100100011001001000110010110101111001001011100001000100101110000111001100111111110011011001000001001000001111001101001000',
+            '0001001111100001110110001010100011100011110011100001010100001001001011100001000100101111001000101100111101001010111000010111101000000001101100101000',
+            '0000101001000010000001100001000011001010100011110111101110111001001011100001000100101110001010100101111010111000000010111011000010011001101000001000',
+            '0001101000000100110100110001010111010111111001101110110101100111011110001001011101111001000110010011100100000100011101110110111010001001000111101000',
+        ]
+        
+        bursts_expected_2 = [
+            '0001110111001111101101110111110000001110111011011100110110001001001011100001000100101110100101001001000110101110111110100110100100111111011001011000',
+            '0001011111010100110010101100011000100011000011111000111100010101001111101100010100111111100110001110010110001110000101110000100101010111100100111000',
+            '0001000100110100001010000101011001010000001111001110011010001001001011100001000100101111100011000100111100100010111001010010110100010000110000110000',
+            '0001001100101001010111000101000101000000111101011111000001011010001111011010001000111100110110011000000011010000100110111101110011110011000011010000',
+            '0001110110111100101101010011111100101100100100110001110110111001001011100001000100101110010111011011100001001010010100010101110100011111010101001000',
+            '0000111001001000110010011110000010011101000001010111011011111010011101011000001001110101011101101100101110010111010001100100000011100100111101010000',
+            '0001000001010011101010101011111100010010101110100001000111110010011101011000001001110101100000100101011101111101101101111000001101101010001000101000',
+            '0001101000001011010011001010011010100110010100011010101101011010000111011101001000011101100010011011111111101011100110000011110110001111000101101000',
+            '0001011000010101011100101011111010110101011110011011001011010010001111011010001000111100110111000110100100001100110100000001100100100111101010011000',
+            '0001010101101101101001011100101001110000100101011110100011100010011101011000001001110100111100001000000111000001111100011011101000101100111100111000',
+            '0000010101001010001110001001101101011011000110011011110111111000110101110010000011010110000000110010100100111001010110110011011101011001110100100000',
+            '0001111111000101100000111010111010011010011110110010111000010101001111101100010100111110000110010011101101011111001000010001111111000111001111011000',
+        ]
+        
+        bursts_expected_3 = [
+            '0001011010100110110011000101111111010011110001101000011100101000110101110010000011010110110100000111011101000001101010100001110111001011010101111000',
+            '0000101010001100010011010101011110010101101110011110100110001010001111011010001000111100000010011011100001010001001111111100011111000011001010011000',
+            '0000111001011100101100111001010101000101010111011110111101010001001011100001000100101111100010100101111011000101100000101111000101011110011111100000',
+            '0000010101101111011001100001011100100101001000110111010110001111011110001001011101111000011010010010101111010000110000011001101011100000111110000000',
+            '0000001010101101011001000000001000001001110100000111000000101001001011100001000100101110111111011101110101010011001110111111101001011010110000101000',
+            '0001011110101111110100110010010110011100111010011001001110011111011110001001011101111000101010001111000111000101111000100011100010100010010100010000',
+            '0001000001011110010010100001100010111111000111001111010101011111011110001001011101111001010010100101110110111111001111110010111100111010110011110000',
+            '0001111100100010101100010111000000011011001111001101101001000010001111011010001000111101111000000101111001110101101001101010001110100111101011001000',
+            '0000100101100011001010101100011110000111001110010010010000100001011011101111000100101110001111010000001000001101011010110101010111011011001101101000',
+            '0000110000111101100001011100100011101011011000111100001000000111011110001001011101111000111000000111100100101000000101100011011001111100110011110000',
+            '0000011001111001100111110110110000001111110101011110100011010010011101011000001001110101001101110111111100001001000101101101100110001111101011010000',
+            '0000100001011010001010000101110000111100011110110010000010101000110101110010000011010111010001010101111111111101101100110101111010110100001110101000',
+        ]
+        
+        src = grgsm.burst_source(self.framenumbers_input, self.timeslots_input, self.bursts_input)
+        splitter = grgsm.burst_sdcch_subslot_splitter(grgsm.SPLITTER_SDCCH4)
+        sink_0 = grgsm.burst_sink()
+        sink_1 = grgsm.burst_sink()
+        sink_2 = grgsm.burst_sink()
+        sink_3 = grgsm.burst_sink()
+
+        self.tb.msg_connect(src, "out", splitter, "in")
+        self.tb.msg_connect(splitter, "out0", sink_0, "in")
+        self.tb.msg_connect(splitter, "out1", sink_1, "in")
+        self.tb.msg_connect(splitter, "out2", sink_2, "in")
+        self.tb.msg_connect(splitter, "out3", sink_3, "in")
+
+        self.tb.run ()
+
+        bursts_result_0 = list(sink_0.get_burst_data())
+        bursts_result_1 = list(sink_1.get_burst_data())
+        bursts_result_2 = list(sink_2.get_burst_data())
+        bursts_result_3 = list(sink_3.get_burst_data())
+                
+        self.assertEqual(bursts_expected_0, bursts_result_0)
+        self.assertEqual(bursts_expected_1, bursts_result_1)
+        self.assertEqual(bursts_expected_2, bursts_result_2)
+        self.assertEqual(bursts_expected_3, bursts_result_3)
+
+
+if __name__ == '__main__':
+    gr_unittest.run(qa_burst_sdcch_subslot_splitter, "qa_burst_sdcch_subslot_splitter.xml")
diff --git a/python/qa_burst_timeslot_splitter.py b/python/qa_burst_timeslot_splitter.py
new file mode 100755
index 0000000..b162a2e
--- /dev/null
+++ b/python/qa_burst_timeslot_splitter.py
@@ -0,0 +1,161 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Roman Khassraf <rkhassraf@gmail.com>
+# @section LICENSE
+# 
+# Gr-gsm is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# Gr-gsm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with gr-gsm; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+# 
+
+from gnuradio import gr, gr_unittest, blocks
+import grgsm
+import pmt
+
+class qa_burst_timeslot_splitter (gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_001 (self):
+        """
+            24 random framenumbers, timeslots and bursts as input
+        """
+        framenumbers_input = [1259192, 1076346, 1076242, 235879, 1259218, 2194302, 2714322, 1588, 1259244, 1563637, 1435624, 1928543, 503726, 1571144, 2658397, 1807445, 869789, 624070, 2005511, 1306953, 2284894, 1600339, 551375, 1259270]
+        timeslots_input = [6, 3, 4, 3, 5, 3, 2, 7, 1, 6, 0, 7, 2, 3, 2, 0, 7, 1, 0, 6, 0, 6, 5, 7]
+        bursts_input = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0001001101101101000111001000101011001101001110110001001100111101001111101100010100111111111001001010011010011111010010010101011001001011011100110000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0001010101111111111010000001010101011111111111101000000001001010000111011101001000011101010111111111111010101000000001010101011011101010000001000000",
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0000010000000010000001001000011001010010000011000101000000001010000111011101001000011101010100100000000001001000001000000100100011000101001000111000",
+            "0001010100110111100000110111100110010100011100011000110110001010000111011101001000011101011111111001111001101010010100000000011111001101000111110000",
+            "0001100110000001011110001000001100101001010100111111000100111010000111011101001000011101000011010010001010111101000100110011111010100010010101000000",
+            "0000010101100101010110000011010000000000000010111001110110101010000111011101001000011101000001000100100001111001100011000101010001110001010100111000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000",
+            "0000001000010001011111111111101010100000010101011101101010101010000111011101001000011101100010010101010101011110101010101000010001011101111010101000",
+            "0000101110101111011001011001000011110010100010011100110010001010000111011101001000011101100000001110000100010100110111001001100010101101100010101000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000",
+            "0001011101101101011100001111001100010001000011011001101110011010000111011101001000011101010010111011100111000001011100100001111010100101111000100000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000"
+        ]
+
+        bursts_expected_0 = [
+            "0001100110000001011110001000001100101001010100111111000100111010000111011101001000011101000011010010001010111101000100110011111010100010010101000000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0000001000010001011111111111101010100000010101011101101010101010000111011101001000011101100010010101010101011110101010101000010001011101111010101000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000"
+        ]
+        
+        bursts_expected_1 = [
+            "0000010000000010000001001000011001010010000011000101000000001010000111011101001000011101010100100000000001001000001000000100100011000101001000111000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000"
+        ]
+        
+        bursts_expected_2 = [
+            "0001010101111111111010000001010101011111111111101000000001001010000111011101001000011101010111111111111010101000000001010101011011101010000001000000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000"
+        ]
+        
+        bursts_expected_3 = [
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000"
+        ]
+        
+        bursts_expected_4 = [
+            "0001001101101101000111001000101011001101001110110001001100111101001111101100010100111111111001001010011010011111010010010101011001001011011100110000"
+        ]
+        
+        bursts_expected_5 = [
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000"
+        ]
+        
+        bursts_expected_6 = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001010100110111100000110111100110010100011100011000110110001010000111011101001000011101011111111001111001101010010100000000011111001101000111110000",
+            "0000101110101111011001011001000011110010100010011100110010001010000111011101001000011101100000001110000100010100110111001001100010101101100010101000",
+            "0001011101101101011100001111001100010001000011011001101110011010000111011101001000011101010010111011100111000001011100100001111010100101111000100000"
+        ]
+        
+        bursts_expected_7 = [
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0000010101100101010110000011010000000000000010111001110110101010000111011101001000011101000001000100100001111001100011000101010001110001010100111000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000"
+        ]
+
+
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        splitter = grgsm.burst_timeslot_splitter()
+        sink_0 = grgsm.burst_sink()
+        sink_1 = grgsm.burst_sink()
+        sink_2 = grgsm.burst_sink()
+        sink_3 = grgsm.burst_sink()
+        sink_4 = grgsm.burst_sink()
+        sink_5 = grgsm.burst_sink()
+        sink_6 = grgsm.burst_sink()
+        sink_7 = grgsm.burst_sink()
+
+        self.tb.msg_connect(src, "out", splitter, "in")
+        self.tb.msg_connect(splitter, "out0", sink_0, "in")
+        self.tb.msg_connect(splitter, "out1", sink_1, "in")
+        self.tb.msg_connect(splitter, "out2", sink_2, "in")
+        self.tb.msg_connect(splitter, "out3", sink_3, "in")
+        self.tb.msg_connect(splitter, "out4", sink_4, "in")
+        self.tb.msg_connect(splitter, "out5", sink_5, "in")
+        self.tb.msg_connect(splitter, "out6", sink_6, "in")
+        self.tb.msg_connect(splitter, "out7", sink_7, "in")
+
+        self.tb.run ()
+
+        bursts_result_0 = list(sink_0.get_burst_data())
+        bursts_result_1 = list(sink_1.get_burst_data())
+        bursts_result_2 = list(sink_2.get_burst_data())
+        bursts_result_3 = list(sink_3.get_burst_data())
+        bursts_result_4 = list(sink_4.get_burst_data())
+        bursts_result_5 = list(sink_5.get_burst_data())
+        bursts_result_6 = list(sink_6.get_burst_data())
+        bursts_result_7 = list(sink_7.get_burst_data())
+        
+        self.assertEqual(bursts_expected_0, bursts_result_0)
+        self.assertEqual(bursts_expected_1, bursts_result_1)
+        self.assertEqual(bursts_expected_2, bursts_result_2)
+        self.assertEqual(bursts_expected_3, bursts_result_3)
+        self.assertEqual(bursts_expected_4, bursts_result_4)
+        self.assertEqual(bursts_expected_5, bursts_result_5)
+        self.assertEqual(bursts_expected_6, bursts_result_6)
+        self.assertEqual(bursts_expected_7, bursts_result_7)
+
+
+if __name__ == '__main__':
+    gr_unittest.run(qa_burst_timeslot_splitter, "qa_burst_timeslot_splitter.xml")
diff --git a/python/qa_decryption.py b/python/qa_decryption.py
index cf228ae..08f0915 100755
--- a/python/qa_decryption.py
+++ b/python/qa_decryption.py
@@ -56,9 +56,9 @@
         key = [0x32,0xE5,0x45,0x53,0x20,0x8C,0xE0,0x00]
         a5_version = 1
 
-        src = grgsm.burst_source_qa(framenumbers_input, timeslots_input, bursts_input)
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
         decryption = grgsm.decryption((key), a5_version)
-        dst = grgsm.burst_sink_qa()
+        dst = grgsm.burst_sink()
 
         self.tb.msg_connect(src, "out", decryption, "bursts")
         self.tb.msg_connect(decryption, "bursts", dst, "in")
@@ -97,9 +97,9 @@
         key = [0xAD,0x6A,0x3E,0xC2,0xB4,0x42,0xE4,0x00]
         a5_version = 1
         
-        src = grgsm.burst_source_qa(framenumbers_input, timeslots_input, bursts_input)
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
         decryption = grgsm.decryption((key), a5_version)
-        dst = grgsm.burst_sink_qa()
+        dst = grgsm.burst_sink()
 
         self.tb.msg_connect(src, "out", decryption, "bursts")
         self.tb.msg_connect(decryption, "bursts", dst, "in")
@@ -138,9 +138,9 @@
         key = [0x41,0xBC,0x19,0x30,0xB6,0x31,0x8A,0xC8]
         a5_version = 3
         
-        src = grgsm.burst_source_qa(framenumbers_input, timeslots_input, bursts_input)
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
         decryption = grgsm.decryption((key), a5_version)
-        dst = grgsm.burst_sink_qa()
+        dst = grgsm.burst_sink()
 
         self.tb.msg_connect(src, "out", decryption, "bursts")
         self.tb.msg_connect(decryption, "bursts", dst, "in")
@@ -179,9 +179,9 @@
         key = [0xAD,0x2C,0xB3,0x83,0x2F,0x4A,0x6C,0xF1]
         a5_version = 3
         
-        src = grgsm.burst_source_qa(framenumbers_input, timeslots_input, bursts_input)
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
         decryption = grgsm.decryption((key), a5_version)
-        dst = grgsm.burst_sink_qa()
+        dst = grgsm.burst_sink()
 
         self.tb.msg_connect(src, "out", decryption, "bursts")
         self.tb.msg_connect(decryption, "bursts", dst, "in")
diff --git a/python/qa_dummy_burst_filter.py b/python/qa_dummy_burst_filter.py
new file mode 100755
index 0000000..5a78890
--- /dev/null
+++ b/python/qa_dummy_burst_filter.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Roman Khassraf <rkhassraf@gmail.com>
+# @section LICENSE
+# 
+# Gr-gsm is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# Gr-gsm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with gr-gsm; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+# 
+
+from gnuradio import gr, gr_unittest, blocks
+import grgsm
+
+class qa_dummy_burst_filter (gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_001 (self):
+        """
+            filter mode less_or_equal, limiting frame number 1500123
+            24 bursts as input, 10 of them dummy bursts
+        """
+        framenumbers_input = [1259192, 1076346, 1076242, 235879, 1259218, 2194302, 2714322, 1588, 1259244, 1563637, 1435624, 1928543, 503726, 1571144, 2658397, 1807445, 869789, 624070, 2005511, 1306953, 2284894, 1600339, 551375, 1259270]
+        timeslots_input = [6, 3, 4, 3, 5, 3, 2, 7, 1, 6, 0, 7, 2, 3, 2, 0, 7, 1, 0, 6, 0, 6, 5, 7]
+        bursts_input = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000",
+            "0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000",
+        ]
+
+        bursts_expected = [
+            "0001100001000111100111101111100101000100101011000010011110011101001111101100010100111111100000110100011111101011101100100111110011000100010001010000",
+            "0001000101000000001001111110000110010110110111110111101000001101001111101100010100111111001110001001110101110001010001000111011010010001011011000000",
+            "0000010010100000001001101010100001011100010001101100111111101101001111101100010100111111101101001110100010101110010110101111100010010000110010110000",
+            "0000010101010110010011110101010101101100000000001000100100101010000111011101001000011101011101110000101011001111000100001000000000001110010001111000",
+            "0001000000000010111010100000010101000010001010111010000000011010000111011101001000011101000000100010111110101000000001000000000010111010100000000000",
+            "0000000000111110101010100001000000100010101110101010000101001010000111011101001000011101001010001111101010001000010000000000101110101010100000010000",
+            "0001000100000011001010111001111100011010000000000000001001001010000111011101001000011101010110000101111010011001110110001001011010101000011110110000",
+            "0001100001000111111111100001011000000011010110111010110000111010000111011101001000011101100010111100100101110001101000110100110000001010101110011000",
+            "0000000100111011000000000010100100001100101010000000010010101010000111011101001000011101000110110001110110000100110100110110011001100100000101100000",
+            "0000100101111010011110111010100111010100011011011101100111001010000111011101001000011101010000111010000110100000001000010011101011001001110100011000",
+            "0000110101000011011010110000110011010000000001001010110010001010000111011101001000011101010000011000111001101110000000110010100001101110101000100000",
+            "0001100010000001000111011100101101101010100001111101001000101010000111011101001000011101111010000011010110010111011111010010001000001101100011111000",
+            "0000001000100011000000000000110100000000010000001010100100001010000111011101001000011101000010010000000000001001000001011000000001010000000100010000",
+            "0000100000110001000000000100000110001011100001001000000000001010000111011101001000011101001010010001010000000111010000000011000001000000000101010000"
+        ]
+
+        dummy_burst_filter = grgsm.dummy_burst_filter()
+        
+        src = grgsm.burst_source(framenumbers_input, timeslots_input, bursts_input)
+        sink = grgsm.burst_sink()
+
+        self.tb.msg_connect(src, "out", dummy_burst_filter, "in")
+        self.tb.msg_connect(dummy_burst_filter, "out", sink, "in")
+
+        self.tb.run()
+
+        bursts_result = list(sink.get_burst_data())
+        
+        self.assertEqual(bursts_expected, bursts_result)
+
+
+if __name__ == '__main__':
+    gr_unittest.run(qa_dummy_burst_filter, "qa_dummy_burst_filter.xml")
diff --git a/python/qa_message_printer.py b/python/qa_message_printer.py
new file mode 100755
index 0000000..4efaaef
--- /dev/null
+++ b/python/qa_message_printer.py
@@ -0,0 +1,166 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Roman Khassraf <rkhassraf@gmail.com>
+# @section LICENSE
+# 
+# Gr-gsm is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# Gr-gsm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with gr-gsm; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+# 
+
+from gnuradio import gr, gr_unittest, blocks
+import grgsm
+import os
+import pmt
+import sys
+import tempfile
+
+class qa_message_printer (gr_unittest.TestCase):
+   
+    def setUp (self):
+        self.tb = gr.top_block()
+        self.tmpfile = tempfile.NamedTemporaryFile()
+        self.prevfd = os.dup(sys.stdout.fileno())
+        os.dup2(self.tmpfile.fileno(), sys.stdout.fileno())
+        self.prev = sys.stdout
+        sys.stdout = os.fdopen(self.prevfd, "w")
+        
+    def tearDown (self):
+        self.tb = None
+        os.dup2(self.prevfd, self.prev.fileno())
+        sys.stdout = self.prev
+        self.tmpfile.close()
+        
+    def getOutput(self):
+        self.tmpfile.seek(0)
+        return self.tmpfile.read()
+    
+    def getOutputExpected(self, expected_lines):
+        out = ""
+        for l in expected_lines:
+            out = out + l + "\n"
+        return out
+        
+    def test_001_no_prefix_no_header (self):
+        """
+            Four messages, without any prefix, no gsmtap header
+        """
+        msgs_input = [
+            "02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        # there is a whitespace at the beginning of message_printer output
+        msgs_expected = [
+            " 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            " 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            " 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            " 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        src = grgsm.message_source(msgs_input)
+        printer = grgsm.message_printer(pmt.intern(""), False)
+        self.tb.msg_connect(src, "msgs", printer, "msgs")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(msgs_expected))
+
+
+    def test_002_prefix_no_header (self):
+        """
+            Four messages, with prefix "test_002:", no gsmtap header
+        """
+        msgs_input = [
+            "02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        msgs_expected = [
+            "test_002: 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "test_002: 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "test_002: 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            "test_002: 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        src = grgsm.message_source(msgs_input)
+        printer = grgsm.message_printer(pmt.intern("test_002:"), False)
+        self.tb.msg_connect(src, "msgs", printer, "msgs")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(msgs_expected))
+
+
+    def test_003_no_prefix_header (self):
+        """
+            Four messages, without any prefix, with gsmtap header
+        """
+        msgs_input = [
+            "02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        # there is a whitespace at the beginning of message_printer output
+        msgs_expected = [
+            " 02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            " 02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            " 02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            " 02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        src = grgsm.message_source(msgs_input)
+        printer = grgsm.message_printer(pmt.intern(""), True)
+        self.tb.msg_connect(src, "msgs", printer, "msgs")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(msgs_expected))
+        
+
+    def test_004_prefix_header (self):
+        """
+            Four messages, with prefix "test_004:", with gsmtap header
+        """
+        msgs_input = [
+            "02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            "02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        # there is a whitespace at the beginning of message_printer output
+        msgs_expected = [
+            "test_004: 02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "test_004: 02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+            "test_004: 02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+            "test_004: 02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"
+        ]
+        
+        src = grgsm.message_source(msgs_input)
+        printer = grgsm.message_printer(pmt.intern("test_004:"), True)
+        self.tb.msg_connect(src, "msgs", printer, "msgs")
+        self.tb.run()
+
+        self.assertEqual(self.getOutput(), self.getOutputExpected(msgs_expected))
+        
+        
+if __name__ == '__main__':
+    gr_unittest.run(qa_message_printer, "qa_message_printer.xml")
+ 
diff --git a/swig/grgsm_swig.i b/swig/grgsm_swig.i
index bf63f08..b6ae71c 100644
--- a/swig/grgsm_swig.i
+++ b/swig/grgsm_swig.i
@@ -16,6 +16,10 @@
 #include "grgsm/decryption/decryption.h"
 #include "grgsm/demapping/universal_ctrl_chans_demapper.h"
 #include "grgsm/demapping/tch_f_chans_demapper.h"
+#include "grgsm/flow_control/burst_timeslot_splitter.h"
+#include "grgsm/flow_control/burst_sdcch_subslot_splitter.h"
+#include "grgsm/flow_control/burst_fnr_filter.h"
+#include "grgsm/flow_control/dummy_burst_filter.h"
 #include "grgsm/misc_utils/bursts_printer.h"
 #include "grgsm/misc_utils/controlled_const_source_f.h"
 #include "grgsm/misc_utils/controlled_rotator_cc.h"
@@ -23,15 +27,16 @@
 #include "grgsm/misc_utils/extract_immediate_assignment.h"
 #include "grgsm/misc_utils/message_printer.h"
 #include "grgsm/misc_utils/tmsi_dumper.h"
-#include "grgsm/misc_utils/burst_sink.h"
-#include "grgsm/misc_utils/burst_sink_qa.h"
-#include "grgsm/misc_utils/burst_source.h"
-#include "grgsm/misc_utils/burst_source_qa.h"
+#include "grgsm/misc_utils/burst_file_sink.h"
+#include "grgsm/misc_utils/burst_file_source.h"
+#include "grgsm/qa_utils/burst_sink.h"
+#include "grgsm/qa_utils/burst_source.h"
+#include "grgsm/qa_utils/message_source.h"
+#include "grgsm/qa_utils/message_sink.h"
 #include "grgsm/misc_utils/message_file_sink.h"
 #include "grgsm/misc_utils/message_file_source.h"
 %}
 
-
 %include "grgsm/receiver/receiver.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, receiver);
 %include "grgsm/receiver/clock_offset_control.h"
@@ -52,16 +57,21 @@
 %include "grgsm/demapping/tch_f_chans_demapper.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, tch_f_chans_demapper);
 
+%include "grgsm/flow_control/burst_timeslot_splitter.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_timeslot_splitter);
+%include "grgsm/flow_control/burst_sdcch_subslot_splitter.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_sdcch_subslot_splitter);
+%include "grgsm/flow_control/burst_fnr_filter.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_fnr_filter);
+%include "grgsm/flow_control/dummy_burst_filter.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, dummy_burst_filter);
+
 %include "grgsm/misc_utils/bursts_printer.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, bursts_printer);
-%include "grgsm/misc_utils/burst_sink.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, burst_sink);
-%include "grgsm/misc_utils/burst_source.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, burst_source);
-%include "grgsm/misc_utils/burst_sink_qa.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, burst_sink_qa);
-%include "grgsm/misc_utils/burst_source_qa.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, burst_source_qa);
+%include "grgsm/misc_utils/burst_file_sink.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_file_sink);
+%include "grgsm/misc_utils/burst_file_source.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_file_source);
 %include "grgsm/misc_utils/extract_system_info.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, extract_system_info);
 %include "grgsm/misc_utils/extract_immediate_assignment.h"
@@ -78,3 +88,12 @@
 GR_SWIG_BLOCK_MAGIC2(gsm, message_file_sink);
 %include "grgsm/misc_utils/message_file_source.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, message_file_source);
+
+%include "grgsm/qa_utils/burst_sink.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_sink);
+%include "grgsm/qa_utils/burst_source.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, burst_source);
+%include "grgsm/qa_utils/message_source.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, message_source);
+%include "grgsm/qa_utils/message_sink.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, message_sink);
