diff --git a/apps/grgsm_livemon_headless.grc b/apps/grgsm_livemon_headless.grc
index de39ad7..caa8e28 100644
--- a/apps/grgsm_livemon_headless.grc
+++ b/apps/grgsm_livemon_headless.grc
@@ -97,7 +97,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(872, 11)</value>
+      <value>(752, 7)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -125,7 +125,7 @@
     </param>
   </block>
   <block>
-    <key>blocks_rotator_cc</key>
+    <key>blocks_head</key>
     <param>
       <key>alias</key>
       <value></value>
@@ -152,6 +152,57 @@
     </param>
     <param>
       <key>id</key>
+      <value>blocks_head_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>num_items</key>
+      <value>int(rec_len*samp_rate)</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_rotator_cc</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(416, 300)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
       <value>blocks_rotator_cc_0</value>
     </param>
     <param>
@@ -187,7 +238,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1632, 295)</value>
+      <value>(1736, 295)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -246,7 +297,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1504, 295)</value>
+      <value>(1608, 295)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -301,7 +352,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1240, 7)</value>
+      <value>(1048, 7)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -344,7 +395,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1240, 95)</value>
+      <value>(1208, 7)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -387,7 +438,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(624, 11)</value>
+      <value>(584, 8)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -430,7 +481,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(552, 11)</value>
+      <value>(480, 8)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -442,7 +493,7 @@
     </param>
     <param>
       <key>label</key>
-      <value>gain</value>
+      <value>RF Gain</value>
     </param>
     <param>
       <key>short_id</key>
@@ -477,7 +528,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(920, 284)</value>
+      <value>(1016, 284)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -520,7 +571,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(552, 411)</value>
+      <value>(688, 414)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -571,7 +622,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1264, 289)</value>
+      <value>(1368, 289)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -610,7 +661,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1264, 345)</value>
+      <value>(1368, 345)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -653,7 +704,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1104, 333)</value>
+      <value>(1208, 333)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -696,7 +747,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(488, 305)</value>
+      <value>(624, 305)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -751,7 +802,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1776, 302)</value>
+      <value>(1880, 302)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -802,7 +853,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(672, 289)</value>
+      <value>(808, 289)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -853,7 +904,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(896, 340)</value>
+      <value>(1016, 340)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -892,7 +943,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1016, 11)</value>
+      <value>(200, 12)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -923,7 +974,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1088, 7)</value>
+      <value>(896, 7)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -966,7 +1017,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(712, 11)</value>
+      <value>(312, 112)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -978,7 +1029,7 @@
     </param>
     <param>
       <key>label</key>
-      <value>ppm</value>
+      <value>Clock frequency offset in ppms (1/1e6 parts)</value>
     </param>
     <param>
       <key>short_id</key>
@@ -994,6 +1045,49 @@
     </param>
   </block>
   <block>
+    <key>parameter</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(312, 8)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>rec_len</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>Recording length in seconds</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value>T</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>eng_float</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>1000000</value>
+    </param>
+  </block>
+  <block>
     <key>rtlsdr_source</key>
     <param>
       <key>alias</key>
@@ -2416,7 +2510,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(16, 115)</value>
+      <value>(16, 128)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -2459,7 +2553,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(1400, 7)</value>
+      <value>(1368, 7)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -2502,7 +2596,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(784, 11)</value>
+      <value>(584, 112)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -2530,6 +2624,12 @@
     </param>
   </block>
   <connection>
+    <source_block_id>blocks_head_0</source_block_id>
+    <sink_block_id>blocks_rotator_cc_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
     <source_block_id>blocks_rotator_cc_0</source_block_id>
     <sink_block_id>gsm_input_0</sink_block_id>
     <source_key>0</source_key>
@@ -2603,7 +2703,7 @@
   </connection>
   <connection>
     <source_block_id>rtlsdr_source_0</source_block_id>
-    <sink_block_id>blocks_rotator_cc_0</sink_block_id>
+    <sink_block_id>blocks_head_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/apps/grgsm_livemon_headless.py b/apps/grgsm_livemon_headless.py
new file mode 100755
index 0000000..bcf3f8e
--- /dev/null
+++ b/apps/grgsm_livemon_headless.py
@@ -0,0 +1,230 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+##################################################
+# GNU Radio Python Flow Graph
+# Title: Gr-gsm Livemon
+# Author: Piotr Krysik
+# Description: Interactive monitor of a single C0 channel with analysis performed by Wireshark (command to run wireshark: sudo wireshark -k -f udp -Y gsmtap -i lo)
+# Generated: Wed Aug 30 10:38:50 2017
+##################################################
+
+from gnuradio import blocks
+from gnuradio import eng_notation
+from gnuradio import gr
+from gnuradio.eng_option import eng_option
+from gnuradio.filter import firdes
+from math import pi
+from optparse import OptionParser
+import grgsm
+import osmosdr
+import pmt
+import time
+
+
+class grgsm_livemon_headless(gr.top_block):
+
+    def __init__(self, rec_len=1000000, samp_rate=2000000.052982, fc=941.8e6, shiftoff=400e3, args="", osr=4, collector="localhost", collectorport="4729", serverport="4729", gain=30, ppm=0):
+        gr.top_block.__init__(self, "Gr-gsm Livemon")
+
+        ##################################################
+        # Parameters
+        ##################################################
+        self.rec_len = rec_len
+        self.samp_rate = samp_rate
+        self.fc = fc
+        self.shiftoff = shiftoff
+        self.args = args
+        self.osr = osr
+        self.collector = collector
+        self.collectorport = collectorport
+        self.serverport = serverport
+        self.gain = gain
+        self.ppm = ppm
+
+        ##################################################
+        # Blocks
+        ##################################################
+        self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + args )
+        self.rtlsdr_source_0.set_sample_rate(samp_rate)
+        self.rtlsdr_source_0.set_center_freq(fc-shiftoff, 0)
+        self.rtlsdr_source_0.set_freq_corr(ppm, 0)
+        self.rtlsdr_source_0.set_dc_offset_mode(2, 0)
+        self.rtlsdr_source_0.set_iq_balance_mode(2, 0)
+        self.rtlsdr_source_0.set_gain_mode(False, 0)
+        self.rtlsdr_source_0.set_gain(gain, 0)
+        self.rtlsdr_source_0.set_if_gain(20, 0)
+        self.rtlsdr_source_0.set_bb_gain(20, 0)
+        self.rtlsdr_source_0.set_antenna("", 0)
+        self.rtlsdr_source_0.set_bandwidth(250e3+abs(shiftoff), 0)
+          
+        self.gsm_sdcch8_demapper_0 = grgsm.gsm_sdcch8_demapper(
+            timeslot_nr=1,
+        )
+        self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]), False)
+        self.gsm_message_printer_1 = grgsm.message_printer(pmt.intern(""), False,
+            False, False)
+        self.gsm_input_0 = grgsm.gsm_input(
+            ppm=ppm-int(ppm),
+            osr=4,
+            fc=fc,
+            samp_rate_in=samp_rate,
+        )
+        self.gsm_decryption_0 = grgsm.decryption(([]), 1)
+        self.gsm_control_channels_decoder_0_0 = grgsm.control_channels_decoder()
+        self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
+        self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc-shiftoff, samp_rate, osr)
+        self.gsm_bcch_ccch_sdcch4_demapper_0 = grgsm.gsm_bcch_ccch_sdcch4_demapper(
+            timeslot_nr=0,
+        )
+        self.blocks_socket_pdu_0_1 = blocks.socket_pdu("UDP_CLIENT", collector, collectorport, 1500, False)
+        self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", "127.0.0.1", serverport, 10000, False)
+        self.blocks_rotator_cc_0 = blocks.rotator_cc(-2*pi*shiftoff/samp_rate)
+        self.blocks_head_0 = blocks.head(gr.sizeof_gr_complex*1, int(rec_len*samp_rate))
+
+        ##################################################
+        # Connections
+        ##################################################
+        self.msg_connect((self.blocks_socket_pdu_0_0, 'pdus'), (self.gsm_message_printer_1, 'msgs'))    
+        self.msg_connect((self.gsm_bcch_ccch_sdcch4_demapper_0, 'bursts'), (self.gsm_control_channels_decoder_0, 'bursts'))    
+        self.msg_connect((self.gsm_clock_offset_control_0, 'ctrl'), (self.gsm_input_0, 'ctrl_in'))    
+        self.msg_connect((self.gsm_control_channels_decoder_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))    
+        self.msg_connect((self.gsm_control_channels_decoder_0_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))    
+        self.msg_connect((self.gsm_decryption_0, 'bursts'), (self.gsm_control_channels_decoder_0_0, 'bursts'))    
+        self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_bcch_ccch_sdcch4_demapper_0, 'bursts'))    
+        self.msg_connect((self.gsm_receiver_0, 'measurements'), (self.gsm_clock_offset_control_0, 'measurements'))    
+        self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_sdcch8_demapper_0, 'bursts'))    
+        self.msg_connect((self.gsm_sdcch8_demapper_0, 'bursts'), (self.gsm_decryption_0, 'bursts'))    
+        self.connect((self.blocks_head_0, 0), (self.blocks_rotator_cc_0, 0))    
+        self.connect((self.blocks_rotator_cc_0, 0), (self.gsm_input_0, 0))    
+        self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))    
+        self.connect((self.rtlsdr_source_0, 0), (self.blocks_head_0, 0))    
+
+    def get_rec_len(self):
+        return self.rec_len
+
+    def set_rec_len(self, rec_len):
+        self.rec_len = rec_len
+        self.blocks_head_0.set_length(int(self.rec_len*self.samp_rate))
+
+    def get_samp_rate(self):
+        return self.samp_rate
+
+    def set_samp_rate(self, samp_rate):
+        self.samp_rate = samp_rate
+        self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
+        self.blocks_head_0.set_length(int(self.rec_len*self.samp_rate))
+        self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
+        self.gsm_input_0.set_samp_rate_in(self.samp_rate)
+
+    def get_fc(self):
+        return self.fc
+
+    def set_fc(self, fc):
+        self.fc = fc
+        self.rtlsdr_source_0.set_center_freq(self.fc-self.shiftoff, 0)
+        self.gsm_input_0.set_fc(self.fc)
+
+    def get_shiftoff(self):
+        return self.shiftoff
+
+    def set_shiftoff(self, shiftoff):
+        self.shiftoff = shiftoff
+        self.rtlsdr_source_0.set_center_freq(self.fc-self.shiftoff, 0)
+        self.rtlsdr_source_0.set_bandwidth(250e3+abs(self.shiftoff), 0)
+        self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
+
+    def get_args(self):
+        return self.args
+
+    def set_args(self, args):
+        self.args = args
+
+    def get_osr(self):
+        return self.osr
+
+    def set_osr(self, osr):
+        self.osr = osr
+
+    def get_collector(self):
+        return self.collector
+
+    def set_collector(self, collector):
+        self.collector = collector
+
+    def get_collectorport(self):
+        return self.collectorport
+
+    def set_collectorport(self, collectorport):
+        self.collectorport = collectorport
+
+    def get_serverport(self):
+        return self.serverport
+
+    def set_serverport(self, serverport):
+        self.serverport = serverport
+
+    def get_gain(self):
+        return self.gain
+
+    def set_gain(self, gain):
+        self.gain = gain
+        self.rtlsdr_source_0.set_gain(self.gain, 0)
+
+    def get_ppm(self):
+        return self.ppm
+
+    def set_ppm(self, ppm):
+        self.ppm = ppm
+        self.rtlsdr_source_0.set_freq_corr(self.ppm, 0)
+        self.gsm_input_0.set_ppm(self.ppm-int(self.ppm))
+
+
+def argument_parser():
+    parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+    parser.add_option(
+        "-T", "--rec-len", dest="rec_len", type="eng_float", default=eng_notation.num_to_str(1000000),
+        help="Set Recording length in seconds [default=%default]")
+    parser.add_option(
+        "-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(2000000.052982),
+        help="Set samp_rate [default=%default]")
+    parser.add_option(
+        "-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(941.8e6),
+        help="Set GSM channel's central frequency [default=%default]")
+    parser.add_option(
+        "-o", "--shiftoff", dest="shiftoff", type="eng_float", default=eng_notation.num_to_str(400e3),
+        help="Set Frequency Shiftoff [default=%default]")
+    parser.add_option(
+        "", "--args", dest="args", type="string", default="",
+        help="Set Device Arguments [default=%default]")
+    parser.add_option(
+        "", "--osr", dest="osr", type="intx", default=4,
+        help="Set OverSampling Ratio [default=%default]")
+    parser.add_option(
+        "", "--collector", dest="collector", type="string", default="localhost",
+        help="Set IP or DNS name of collector point [default=%default]")
+    parser.add_option(
+        "", "--collectorport", dest="collectorport", type="string", default="4729",
+        help="Set UDP port number of collector [default=%default]")
+    parser.add_option(
+        "", "--serverport", dest="serverport", type="string", default="4729",
+        help="Set UDP server listening port [default=%default]")
+    parser.add_option(
+        "-g", "--gain", dest="gain", type="eng_float", default=eng_notation.num_to_str(30),
+        help="Set RF Gain [default=%default]")
+    parser.add_option(
+        "-p", "--ppm", dest="ppm", type="eng_float", default=eng_notation.num_to_str(0),
+        help="Set Clock frequency offset in ppms (1/1e6 parts) [default=%default]")
+    return parser
+
+
+def main(top_block_cls=grgsm_livemon_headless, options=None):
+    if options is None:
+        options, _ = argument_parser().parse_args()
+
+    tb = top_block_cls(rec_len=options.rec_len, samp_rate=options.samp_rate, fc=options.fc, shiftoff=options.shiftoff, args=options.args, osr=options.osr, collector=options.collector, collectorport=options.collectorport, serverport=options.serverport, gain=options.gain, ppm=options.ppm)
+    tb.start()
+    tb.wait()
+
+
+if __name__ == '__main__':
+    main()
