diff --git a/lib/bursts_printer_impl.cc b/lib/bursts_printer_impl.cc
index 4fdb373..ba4ff4c 100644
--- a/lib/bursts_printer_impl.cc
+++ b/lib/bursts_printer_impl.cc
@@ -24,18 +24,38 @@
 
 #include <gnuradio/io_signature.h>
 #include "bursts_printer_impl.h"
+#include <gsmtap.h>
+#include <iterator>
+#include <algorithm>
 
 namespace gr {
   namespace gsm {
-    void bursts_printer_impl::bursts_print(pmt::pmt_t burst)
+    void bursts_printer_impl::bursts_print(pmt::pmt_t msg)
     {
-        int ii;
-        size_t burst_len;
-        int8_t *burst_elements = pmt::s8vector_writable_elements(burst, burst_len);
+        pmt::pmt_t burst = pmt::cdr(msg);
+        int8_t * burst_elements = (int8_t *)pmt::blob_data(burst);
+        size_t burst_len=pmt::blob_length(burst);
 
-        for(ii=0; ii<burst_len; ii++)
+        pmt::pmt_t header_blob = pmt::car(msg);
+        gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_blob);
+        d_c0_channels.insert(header->arfcn);
+        
+//        d_channels_dbm.insert(header->signal_dbm);
+//        std::copy(
+//            d_c0_channels.begin(),
+//            d_c0_channels.end(),
+//            std::ostream_iterator<uint16_t>(std::cout, " ")
+//        );
+//        std::cout << std::endl;
+//        std::copy(
+//            d_channels_dbm.begin(),
+//            d_channels_dbm.end(),
+//            std::ostream_iterator<int>(std::cout, " ")
+//        );
+
+        for(int ii=0; ii<burst_len; ii++)
         {
-           std::cout << std::setprecision(1) << static_cast<int>(burst_elements[ii]) << "";
+          std::cout << std::setprecision(1) << static_cast<int>(burst_elements[ii]) << " ";
         }
         std::cout << std::endl;
     }
