diff --git a/grc/transmitter/CMakeLists.txt b/grc/transmitter/CMakeLists.txt
new file mode 100644
index 0000000..e4f5c0b
--- /dev/null
+++ b/grc/transmitter/CMakeLists.txt
@@ -0,0 +1,22 @@
+# 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_txtime_bursts_tagger.xml DESTINATION share/gnuradio/grc/blocks
+)
diff --git a/grc/transmitter/gsm_txtime_bursts_tagger.xml b/grc/transmitter/gsm_txtime_bursts_tagger.xml
new file mode 100644
index 0000000..6e72e03
--- /dev/null
+++ b/grc/transmitter/gsm_txtime_bursts_tagger.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<block>
+  <name>txtime_bursts_tagger</name>
+  <key>gsm_txtime_bursts_tagger</key>
+  <category>GSM</category>
+  <import>import grgsm</import>
+  <make>grgsm.txtime_bursts_tagger()</make>
+
+  <param>
+    <name>init_fn</name>
+    <key>init_fn</key>
+    <value>20</value>
+    <type>int</type>
+    <hide>part</hide>
+  </param>
+
+  <param>
+    <name>init_time</name>
+    <key>init_time</key>
+    <value>[10 0.1]</value>
+    <type>none</type>
+    <hide>part</hide>
+  </param>
+
+  <sink>
+    <name>fn_time</name>
+    <type>message</type>
+    <optional>1</optional>
+  </sink>
+
+  <sink>
+    <name>bursts</name>
+    <type>message</type>
+    <optional>1</optional>
+  </sink>
+
+  <source>
+    <name>bursts</name>
+    <type>message</type>
+    <optional>1</optional>
+  </source>
+</block>
diff --git a/python/qa_txtime_bursts_tagger.py b/python/qa_txtime_bursts_tagger.py
new file mode 100755
index 0000000..80257fa
--- /dev/null
+++ b/python/qa_txtime_bursts_tagger.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Piotr Krysik <ptrkrysik@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
+from gnuradio import blocks
+from txtime_bursts_tagger import txtime_bursts_tagger
+
+class qa_txtime_bursts_tagger (gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_001_t (self):
+        # set up fg
+        self.tb.run ()
+        # check data
+
+
+if __name__ == '__main__':
+    gr_unittest.run(qa_txtime_bursts_tagger, "qa_txtime_bursts_tagger.xml")
diff --git a/python/transmitter/txtime_bursts_tagger.py b/python/transmitter/txtime_bursts_tagger.py
new file mode 100644
index 0000000..ce57e55
--- /dev/null
+++ b/python/transmitter/txtime_bursts_tagger.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @file
+# @author Piotr Krysik <ptrkrysik@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.
+# 
+# 
+
+import numpy
+from gnuradio import gr
+
+class txtime_bursts_tagger(gr.basic_block):
+    """
+    A block that adds txtime metadata to a burst
+    """
+    def __init__(self):
+        gr.basic_block.__init__(self,
+            name="txtime_bursts_tagger",
+            in_sig=[],
+            out_sig=[])
+        self.message_port_register_in(pmt.intern("fn_time"))
+        self.message_port_register_in(pmt.intern("bursts"))
+        self.message_port_register_out(pmt.intern("bursts"))
+    
+        self.set_msg_handler(pmt.intern("fn_time"), self.set_fn_time_reference)
+        self.set_msg_handler(pmt.intern("bursts"), self.set_txtime_of_burst)
+        
+    def set_fn_time_reference(self, msg):
+        pass
+        
+    def set_txtime_of_burst()
+        pass
