diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt
index 26a91d5..c3646a2 100644
--- a/grc/CMakeLists.txt
+++ b/grc/CMakeLists.txt
@@ -23,7 +23,6 @@
 add_subdirectory(receiver)
 add_subdirectory(flow_control)
 add_subdirectory(misc_utils)
-add_subdirectory(trx_interface)
 add_subdirectory(transmitter)
 install(FILES
     gsm_block_tree.xml DESTINATION share/gnuradio/grc/blocks
diff --git a/grc/misc_utils/CMakeLists.txt b/grc/misc_utils/CMakeLists.txt
index adb90d3..9407caf 100644
--- a/grc/misc_utils/CMakeLists.txt
+++ b/grc/misc_utils/CMakeLists.txt
@@ -31,6 +31,7 @@
     gsm_burst_file_source.xml
     gsm_message_file_sink.xml
     gsm_message_file_source.xml
+    gsm_trx_burst_if.xml
     gsm_msg_to_tag.xml
     gsm_controlled_fractional_resampler_cc.xml DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/trx_interface/gsm_trx.xml b/grc/misc_utils/gsm_trx_burst_if.xml
similarity index 93%
rename from grc/trx_interface/gsm_trx.xml
rename to grc/misc_utils/gsm_trx_burst_if.xml
index cbe268c..d3dab5c 100644
--- a/grc/trx_interface/gsm_trx.xml
+++ b/grc/misc_utils/gsm_trx_burst_if.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <block>
-  <name>TRX Interface</name>
-  <key>grgsm_trx_interface</key>
+  <name>TRX Burst Interface</name>
+  <key>grgsm_trx_burst_if</key>
   <import>import grgsm</import>
-  <make>grgsm.trx($remote_addr, $base_port)</make>
+  <make>grgsm.trx_burst_if($remote_addr, $base_port)</make>
 
   <param>
     <name>base_port</name>
diff --git a/grc/trx_interface/CMakeLists.txt b/grc/trx_interface/CMakeLists.txt
deleted file mode 100644
index 752b7a7..0000000
--- a/grc/trx_interface/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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_trx.xml DESTINATION share/gnuradio/grc/blocks
-)
diff --git a/include/grgsm/CMakeLists.txt b/include/grgsm/CMakeLists.txt
index 59034dc..0b58018 100644
--- a/include/grgsm/CMakeLists.txt
+++ b/include/grgsm/CMakeLists.txt
@@ -36,4 +36,3 @@
 add_subdirectory(qa_utils)
 add_subdirectory(flow_control)
 add_subdirectory(transmitter)
-add_subdirectory(trx_interface)
diff --git a/include/grgsm/misc_utils/CMakeLists.txt b/include/grgsm/misc_utils/CMakeLists.txt
index 978695e..8ac1f52 100644
--- a/include/grgsm/misc_utils/CMakeLists.txt
+++ b/include/grgsm/misc_utils/CMakeLists.txt
@@ -34,6 +34,7 @@
     message_printer.h
     tmsi_dumper.h
     msg_to_tag.h
+    trx_burst_if.h
     controlled_fractional_resampler_cc.h 
     time_spec.h
     fn_time.h DESTINATION include/grgsm/misc_utils
diff --git a/include/grgsm/trx_interface/trx.h b/include/grgsm/misc_utils/trx_burst_if.h
similarity index 78%
rename from include/grgsm/trx_interface/trx.h
rename to include/grgsm/misc_utils/trx_burst_if.h
index c55bf36..18ceef1 100644
--- a/include/grgsm/trx_interface/trx.h
+++ b/include/grgsm/misc_utils/trx_burst_if.h
@@ -20,8 +20,8 @@
  * 
  */
 
-#ifndef INCLUDED_GRGSM_TRX_H
-#define INCLUDED_GRGSM_TRX_H
+#ifndef INCLUDED_GRGSM_TRX_BURST_IF_H
+#define INCLUDED_GRGSM_TRX_BURST_IF_H
 
 #include <grgsm/api.h>
 #include <gnuradio/sync_block.h>
@@ -34,17 +34,17 @@
      * \ingroup grgsm
      *
      */
-    class GRGSM_API trx : virtual public gr::block
+    class GRGSM_API trx_burst_if : virtual public gr::block
     {
      public:
-      typedef boost::shared_ptr<trx> sptr;
+      typedef boost::shared_ptr<trx_burst_if> sptr;
 
       /*!
-       * \brief Return a shared_ptr to a new instance of grgsm::trx.
+       * \brief Return a shared_ptr to a new instance of grgsm::trx_burst_if.
        *
-       * To avoid accidental use of raw pointers, grgsm::trx's
+       * To avoid accidental use of raw pointers, grgsm::trx_burst_if's
        * constructor is in a private implementation
-       * class. grgsm::trx::make is the public interface for
+       * class. grgsm::trx_burst_if::make is the public interface for
        * creating new instances.
        */
       static sptr make(
@@ -59,5 +59,5 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GRGSM_TRX_H */
+#endif /* INCLUDED_GRGSM_TRX_BURST_IF_H */
 
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 60758a1..9ca7b88 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -71,7 +71,6 @@
 add_subdirectory(qa_utils)
 add_subdirectory(receiver)
 add_subdirectory(transmitter)
-add_subdirectory(trx_interface)
 
 ########################################################################
 # Setup library
diff --git a/lib/misc_utils/CMakeLists.txt b/lib/misc_utils/CMakeLists.txt
index 81f2ca8..370f11c 100644
--- a/lib/misc_utils/CMakeLists.txt
+++ b/lib/misc_utils/CMakeLists.txt
@@ -34,5 +34,7 @@
     tmsi_dumper_impl.cc
     time_spec.cc
     fn_time.cc
+    udp_socket.cc
+    trx_burst_if_impl.cc
 )
 
diff --git a/lib/trx_interface/trx_impl.cc b/lib/misc_utils/trx_burst_if_impl.cc
similarity index 88%
rename from lib/trx_interface/trx_impl.cc
rename to lib/misc_utils/trx_burst_if_impl.cc
index 8c348ac..432ad2f 100644
--- a/lib/trx_interface/trx_impl.cc
+++ b/lib/misc_utils/trx_burst_if_impl.cc
@@ -28,7 +28,7 @@
 #include <boost/lexical_cast.hpp>
 
 #include "udp_socket.h"
-#include "trx_impl.h"
+#include "trx_burst_if_impl.h"
 
 #define BURST_SIZE     148
 #define DATA_IF_MTU    160
@@ -46,22 +46,24 @@
 namespace gr {
   namespace gsm {
 
-    trx::sptr
-    trx::make(
+    trx_burst_if::sptr
+    trx_burst_if::make(
       const std::string &remote_addr,
       const std::string &base_port)
     {
       int base_port_int = boost::lexical_cast<int> (base_port);
 
       return gnuradio::get_initial_sptr
-        (new trx_impl(remote_addr, base_port_int));
+        (new trx_burst_if_impl(remote_addr, base_port_int));
     }
 
     /*
      * The private constructor
      */
-    trx_impl::trx_impl(const std::string &remote_addr, int base_port)
-    : gr::block("trx",
+    trx_burst_if_impl::trx_burst_if_impl(
+      const std::string &remote_addr,
+      int base_port
+    ) : gr::block("trx_burst_if",
         gr::io_signature::make(0, 0, 0),
         gr::io_signature::make(0, 0, 0))
     {
@@ -70,7 +72,7 @@
 
         // Bind a port handler
         set_msg_handler(pmt::mp("bursts"),
-          boost::bind(&trx_impl::handle_dl_burst, this, _1));
+          boost::bind(&trx_burst_if_impl::handle_dl_burst, this, _1));
 
         // Prepare port numbers
         std::string clck_src_port = boost::lexical_cast<std::string> (base_port + 0);
@@ -86,7 +88,7 @@
 
         // Bind DATA interface handler
         d_data_sock->udp_rx_handler = boost::bind(
-          &trx_impl::handle_ul_burst, this, _1, _2);
+          &trx_burst_if_impl::handle_ul_burst, this, _1, _2);
 
         // Init timeslot filter
         d_ts_filter_tn = -1;
@@ -95,7 +97,7 @@
     /*
      * Our virtual destructor.
      */
-    trx_impl::~trx_impl()
+    trx_burst_if_impl::~trx_burst_if_impl()
     {
         // Release all UDP sockets and free memory
         delete d_data_sock;
@@ -106,13 +108,13 @@
      * Timeslot filter API (getter and setter)
      */
     void
-    trx_impl::ts_filter_set_tn(int tn)
+    trx_burst_if_impl::ts_filter_set_tn(int tn)
     {
       d_ts_filter_tn = (tn >= 0 && tn <= 7) ? tn : -1;
     }
 
     int
-    trx_impl::ts_filter_get_tn(void)
+    trx_burst_if_impl::ts_filter_get_tn(void)
     {
       return d_ts_filter_tn;
     }
@@ -120,7 +122,7 @@
     /*
      * Check if burst is a RACH burst
      */
-    bool trx_impl::detect_rach(uint8_t *burst)
+    bool trx_burst_if_impl::detect_rach(uint8_t *burst)
     {
       // Compare synchronization sequence
       for (int i = 0; i < 41; i++)
@@ -139,7 +141,7 @@
      * Create an UDP payload with clock indication
      */
     void
-    trx_impl::clck_ind_send(uint32_t frame_nr)
+    trx_burst_if_impl::clck_ind_send(uint32_t frame_nr)
     {
       char buf[20];
       size_t n;
@@ -153,7 +155,7 @@
      * and some channel data.
      */
     void
-    trx_impl::burst_pack(pmt::pmt_t msg, uint8_t *buf)
+    trx_burst_if_impl::burst_pack(pmt::pmt_t msg, uint8_t *buf)
     {
       pmt::pmt_t header_plus_burst = pmt::cdr(msg);
 
@@ -200,7 +202,7 @@
     }
 
     void
-    trx_impl::handle_dl_burst(pmt::pmt_t msg)
+    trx_burst_if_impl::handle_dl_burst(pmt::pmt_t msg)
     {
       // 8 bytes of header + 148 bytes of burst
       // + two unused, but required bytes
@@ -219,7 +221,7 @@
     }
 
     void
-    trx_impl::handle_ul_burst(uint8_t *payload, size_t len)
+    trx_burst_if_impl::handle_ul_burst(uint8_t *payload, size_t len)
     {
       // Check length according to the protocol
       if (len != 154)
diff --git a/lib/trx_interface/trx_impl.h b/lib/misc_utils/trx_burst_if_impl.h
similarity index 80%
rename from lib/trx_interface/trx_impl.h
rename to lib/misc_utils/trx_burst_if_impl.h
index 6fecf17..23d2264 100644
--- a/lib/trx_interface/trx_impl.h
+++ b/lib/misc_utils/trx_burst_if_impl.h
@@ -20,18 +20,18 @@
  * 
  */
 
-#ifndef INCLUDED_GRGSM_TRX_IMPL_H
-#define INCLUDED_GRGSM_TRX_IMPL_H
- 
+#ifndef INCLUDED_GRGSM_TRX_BURST_IF_IMPL_H
+#define INCLUDED_GRGSM_TRX_BURST_IF_IMPL_H
+
 #include <stddef.h>
 
 #include <grgsm/gsmtap.h>
-#include <grgsm/trx_interface/trx.h>
+#include <grgsm/misc_utils/trx_burst_if.h>
 
 namespace gr {
   namespace gsm {
 
-    class trx_impl : public trx
+    class trx_burst_if_impl : public trx_burst_if
     {
      private:
       udp_socket *d_data_sock;
@@ -43,8 +43,8 @@
       void burst_pack(pmt::pmt_t msg, uint8_t *buf);
 
      public:
-      trx_impl(const std::string &remote_addr, int base_port);
-      ~trx_impl();
+      trx_burst_if_impl(const std::string &remote_addr, int base_port);
+      ~trx_burst_if_impl();
 
       /* Timeslot filter API */
       void ts_filter_set_tn(int tn);
@@ -57,5 +57,5 @@
   } // namespace gsm
 } // namespace gr
 
-#endif /* INCLUDED_GRGSM_TRX_IMPL_H */
+#endif /* INCLUDED_GRGSM_TRX_BURST_IF_IMPL_H */
 
diff --git a/lib/trx_interface/udp_socket.cc b/lib/misc_utils/udp_socket.cc
similarity index 100%
rename from lib/trx_interface/udp_socket.cc
rename to lib/misc_utils/udp_socket.cc
diff --git a/lib/trx_interface/udp_socket.h b/lib/misc_utils/udp_socket.h
similarity index 100%
rename from lib/trx_interface/udp_socket.h
rename to lib/misc_utils/udp_socket.h
diff --git a/lib/trx_interface/CMakeLists.txt b/lib/trx_interface/CMakeLists.txt
deleted file mode 100644
index 12767b9..0000000
--- a/lib/trx_interface/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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.
-
-add_sources(
-    trx_impl.cc
-    udp_socket.cc
-)
diff --git a/swig/grgsm_swig.i b/swig/grgsm_swig.i
index 64c1024..4901b44 100644
--- a/swig/grgsm_swig.i
+++ b/swig/grgsm_swig.i
@@ -67,10 +67,10 @@
 #include "grgsm/misc_utils/message_file_source.h"
 #include "grgsm/misc_utils/msg_to_tag.h"
 #include "grgsm/misc_utils/controlled_fractional_resampler_cc.h"
-#include "grgsm/trx_interface/trx.h"
 //#include "grgsm/misc_utils/time_spec.h"
 #include "grgsm/misc_utils/fn_time.h"
 #include "grgsm/transmitter/txtime_setter.h"
+#include "grgsm/misc_utils/trx_burst_if.h"
 %}
 
 %include "constants.i"
@@ -140,6 +140,8 @@
 GR_SWIG_BLOCK_MAGIC2(gsm, controlled_fractional_resampler_cc);
 %include "grgsm/misc_utils/extract_cmc.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, extract_cmc);
+%include "grgsm/misc_utils/trx_burst_if.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, trx_burst_if);
 
 
 %include "grgsm/qa_utils/burst_sink.h"
@@ -150,8 +152,6 @@
 GR_SWIG_BLOCK_MAGIC2(gsm, message_source);
 %include "grgsm/qa_utils/message_sink.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, message_sink);
-%include "grgsm/trx_interface/trx.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, trx);
 
 //#pragma SWIG nowarn=319
 //%include "grgsm/misc_utils/time_spec.h"
