diff --git a/include/grgsm/flow_control/uplink_downlink_splitter.h b/include/grgsm/flow_control/uplink_downlink_splitter.h
index 0dbc0bc..874c0b6 100644
--- a/include/grgsm/flow_control/uplink_downlink_splitter.h
+++ b/include/grgsm/flow_control/uplink_downlink_splitter.h
@@ -28,7 +28,7 @@
 #include <gnuradio/block.h>
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     /*!
      * \brief <+description of block+>
@@ -51,7 +51,7 @@
       static sptr make();
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_UPLINK_DOWNLINK_SPLITTER_H */
diff --git a/include/grgsm/misc_utils/controlled_fractional_resampler_cc.h b/include/grgsm/misc_utils/controlled_fractional_resampler_cc.h
index b085f94..9dae6b8 100644
--- a/include/grgsm/misc_utils/controlled_fractional_resampler_cc.h
+++ b/include/grgsm/misc_utils/controlled_fractional_resampler_cc.h
@@ -57,7 +57,7 @@
       virtual void set_resamp_ratio(float resamp_ratio) = 0;
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_CONTROLLED_FRACTIONAL_RESAMPLER_CC_H */
diff --git a/include/grgsm/misc_utils/msg_to_tag.h b/include/grgsm/misc_utils/msg_to_tag.h
index 87e2e78..c7b4e10 100644
--- a/include/grgsm/misc_utils/msg_to_tag.h
+++ b/include/grgsm/misc_utils/msg_to_tag.h
@@ -50,7 +50,7 @@
       static sptr make();
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_MSG_TO_TAG_H */
diff --git a/include/grgsm/trx_interface/trx.h b/include/grgsm/trx_interface/trx.h
index 997ef62..c55bf36 100644
--- a/include/grgsm/trx_interface/trx.h
+++ b/include/grgsm/trx_interface/trx.h
@@ -27,7 +27,7 @@
 #include <gnuradio/sync_block.h>
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     /*!
      * \brief <+description of block+>
@@ -56,7 +56,7 @@
       virtual int ts_filter_get_tn(void) = 0;
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_TRX_H */
diff --git a/lib/flow_control/uplink_downlink_splitter_impl.cc b/lib/flow_control/uplink_downlink_splitter_impl.cc
index 691feb3..de5ae30 100644
--- a/lib/flow_control/uplink_downlink_splitter_impl.cc
+++ b/lib/flow_control/uplink_downlink_splitter_impl.cc
@@ -30,7 +30,7 @@
 #include <grgsm/endian.h>
 #define BURST_SIZE 148
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     uplink_downlink_splitter::sptr
     uplink_downlink_splitter::make()
@@ -71,6 +71,6 @@
     uplink_downlink_splitter_impl::~uplink_downlink_splitter_impl()
     {
     }
-  } /* namespace grgsm */
+  } /* namespace gsm */
 } /* namespace gr */
 
diff --git a/lib/flow_control/uplink_downlink_splitter_impl.h b/lib/flow_control/uplink_downlink_splitter_impl.h
index fb8b2b8..5edfe5a 100644
--- a/lib/flow_control/uplink_downlink_splitter_impl.h
+++ b/lib/flow_control/uplink_downlink_splitter_impl.h
@@ -26,7 +26,7 @@
 #include <grgsm/flow_control/uplink_downlink_splitter.h>
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     class uplink_downlink_splitter_impl : public uplink_downlink_splitter
     {
@@ -36,7 +36,7 @@
 
       void process_msg(pmt::pmt_t msg);
     };
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_UPLINK_DOWNLINK_SPLITTER_IMPL_H */
diff --git a/lib/misc_utils/controlled_fractional_resampler_cc_impl.cc b/lib/misc_utils/controlled_fractional_resampler_cc_impl.cc
index 3376c67..36cf170 100644
--- a/lib/misc_utils/controlled_fractional_resampler_cc_impl.cc
+++ b/lib/misc_utils/controlled_fractional_resampler_cc_impl.cc
@@ -177,6 +177,6 @@
       set_relative_rate(1.0 / resamp_ratio);
     }
 
-  } /* namespace grgsm */
+  } /* namespace gsm */
 } /* namespace gr */
 
diff --git a/lib/misc_utils/controlled_fractional_resampler_cc_impl.h b/lib/misc_utils/controlled_fractional_resampler_cc_impl.h
index 24e00ed..1ca8082 100644
--- a/lib/misc_utils/controlled_fractional_resampler_cc_impl.h
+++ b/lib/misc_utils/controlled_fractional_resampler_cc_impl.h
@@ -64,7 +64,7 @@
       void set_resamp_ratio(float resamp_ratio);
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_CONTROLLED_FRACTIONAL_RESAMPLER_CC_IMPL_H */
diff --git a/lib/misc_utils/msg_to_tag_impl.cc b/lib/misc_utils/msg_to_tag_impl.cc
index 0ab65e7..e08c7e6 100644
--- a/lib/misc_utils/msg_to_tag_impl.cc
+++ b/lib/misc_utils/msg_to_tag_impl.cc
@@ -94,6 +94,6 @@
       return noutput_items;
     }
 
-  } /* namespace grgsm */
+  } /* namespace gsm */
 } /* namespace gr */
 
diff --git a/lib/misc_utils/msg_to_tag_impl.h b/lib/misc_utils/msg_to_tag_impl.h
index 39c6ca3..55e1fae 100644
--- a/lib/misc_utils/msg_to_tag_impl.h
+++ b/lib/misc_utils/msg_to_tag_impl.h
@@ -44,7 +44,7 @@
          gr_vector_void_star &output_items);
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_MSG_TO_TAG_IMPL_H */
diff --git a/lib/trx_interface/trx_impl.cc b/lib/trx_interface/trx_impl.cc
index 2068da3..8c348ac 100644
--- a/lib/trx_interface/trx_impl.cc
+++ b/lib/trx_interface/trx_impl.cc
@@ -44,7 +44,7 @@
 };
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     trx::sptr
     trx::make(
@@ -269,5 +269,5 @@
       message_port_pub(pmt::mp("bursts"), msg);
     }
 
-  } /* namespace grgsm */
+  } /* namespace gsm */
 } /* namespace gr */
diff --git a/lib/trx_interface/trx_impl.h b/lib/trx_interface/trx_impl.h
index 19e4848..44a914e 100644
--- a/lib/trx_interface/trx_impl.h
+++ b/lib/trx_interface/trx_impl.h
@@ -29,7 +29,7 @@
 #include <grgsm/trx_interface/trx.h>
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     class trx_impl : public trx
     {
@@ -54,7 +54,7 @@
       void handle_ul_burst(uint8_t *payload, size_t len);
     };
 
-  } // namespace grgsm
+  } // namespace gsm
 } // namespace gr
 
 #endif /* INCLUDED_GRGSM_TRX_IMPL_H */
diff --git a/lib/trx_interface/udp_socket.cc b/lib/trx_interface/udp_socket.cc
index be4bb66..5c689c7 100644
--- a/lib/trx_interface/udp_socket.cc
+++ b/lib/trx_interface/udp_socket.cc
@@ -35,7 +35,7 @@
 using boost::asio::ip::udp;
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     udp_socket::udp_socket(
       const std::string &remote_addr,
@@ -115,5 +115,5 @@
           boost::asio::placeholders::bytes_transferred));
     }
 
-  } /* namespace blocks */
+  } /* namespace gsm */
 }/* namespace gr */
diff --git a/lib/trx_interface/udp_socket.h b/lib/trx_interface/udp_socket.h
index 5bcc42b..15b2c66 100644
--- a/lib/trx_interface/udp_socket.h
+++ b/lib/trx_interface/udp_socket.h
@@ -32,7 +32,7 @@
 #include <pmt/pmt.h>
 
 namespace gr {
-  namespace grgsm {
+  namespace gsm {
 
     class udp_socket
     {
@@ -63,7 +63,7 @@
       boost::function<void (uint8_t *, size_t)> udp_rx_handler;
     };
 
-  } /* namespace blocks */
+  } /* namespace gsm */
 } /* namespace gr */
 
 #endif /* INCLUDED_GRGSM_TRX_UDP_SOCKET_H */
diff --git a/swig/grgsm_swig.i b/swig/grgsm_swig.i
index b4fecf6..64c1024 100644
--- a/swig/grgsm_swig.i
+++ b/swig/grgsm_swig.i
@@ -109,7 +109,7 @@
 %include "grgsm/flow_control/dummy_burst_filter.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, dummy_burst_filter);
 %include "grgsm/flow_control/uplink_downlink_splitter.h"
-GR_SWIG_BLOCK_MAGIC2(grgsm, uplink_downlink_splitter);
+GR_SWIG_BLOCK_MAGIC2(gsm, uplink_downlink_splitter);
 
 
 %include "grgsm/misc_utils/bursts_printer.h"
@@ -151,7 +151,7 @@
 %include "grgsm/qa_utils/message_sink.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, message_sink);
 %include "grgsm/trx_interface/trx.h"
-GR_SWIG_BLOCK_MAGIC2(grgsm, trx);
+GR_SWIG_BLOCK_MAGIC2(gsm, trx);
 
 //#pragma SWIG nowarn=319
 //%include "grgsm/misc_utils/time_spec.h"
@@ -176,5 +176,6 @@
 //};
 
 %include "grgsm/misc_utils/fn_time.h"
+
 %include "grgsm/transmitter/txtime_setter.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, txtime_setter);
diff --git a/swig/grgsm_swig.i.orig b/swig/grgsm_swig.i.orig
deleted file mode 100644
index 888f07a..0000000
--- a/swig/grgsm_swig.i.orig
+++ /dev/null
@@ -1,151 +0,0 @@
-/* -*- c++ -*- */
-/*
- * @file
- * @author (C) 2014 by 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.
- */
-
-
-#define GRGSM_API
-
-%include "gnuradio.i"			// the common stuff
-
-//load generated python docstrings
-%include "grgsm_swig_doc.i"
-
-%{
-#include "grgsm/constants.h"
-#include "grgsm/receiver/receiver.h"
-#include "grgsm/receiver/clock_offset_control.h"
-#include "grgsm/receiver/cx_channel_hopper.h"
-#include "grgsm/decoding/control_channels_decoder.h"
-#include "grgsm/decoding/tch_f_decoder.h"
-#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/common.h"
-#include "grgsm/flow_control/burst_timeslot_splitter.h"
-#include "grgsm/flow_control/burst_sdcch_subslot_splitter.h"
-#include "grgsm/flow_control/burst_timeslot_filter.h"
-#include "grgsm/flow_control/burst_sdcch_subslot_filter.h"
-#include "grgsm/flow_control/burst_fnr_filter.h"
-#include "grgsm/flow_control/dummy_burst_filter.h"
-#include "grgsm/flow_control/uplink_downlink_splitter.h"
-#include "grgsm/misc_utils/bursts_printer.h"
-#include "grgsm/misc_utils/controlled_rotator_cc.h"
-#include "grgsm/misc_utils/extract_system_info.h"
-#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_file_sink.h"
-#include "grgsm/misc_utils/burst_file_source.h"
-#include "grgsm/misc_utils/collect_system_info.h"
-#include "grgsm/misc_utils/extract_cmc.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/misc_utils/msg_to_tag.h"
-#include "grgsm/misc_utils/controlled_fractional_resampler_cc.h"
-#include "grgsm/trx_interface/trx.h"
-%}
-
-%include "constants.i"
-
-%include "grgsm/receiver/receiver.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, receiver);
-%include "grgsm/receiver/clock_offset_control.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, clock_offset_control);
-%include "grgsm/receiver/cx_channel_hopper.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, cx_channel_hopper);
-
-%include "grgsm/decoding/control_channels_decoder.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, control_channels_decoder);
-%include "grgsm/decoding/tch_f_decoder.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, tch_f_decoder);
-
-%include "grgsm/decryption/decryption.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, decryption);
-
-%include "grgsm/demapping/universal_ctrl_chans_demapper.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, universal_ctrl_chans_demapper);
-%include "grgsm/demapping/tch_f_chans_demapper.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, tch_f_chans_demapper);
-
-%include "grgsm/flow_control/common.h"
-%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_timeslot_filter.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, burst_timeslot_filter);
-%include "grgsm/flow_control/burst_sdcch_subslot_filter.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, burst_sdcch_subslot_filter);
-%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/flow_control/uplink_downlink_splitter.h"
-GR_SWIG_BLOCK_MAGIC2(grgsm, uplink_downlink_splitter);
-
-
-%include "grgsm/misc_utils/bursts_printer.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, bursts_printer);
-%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/collect_system_info.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, collect_system_info);
-%include "grgsm/misc_utils/extract_system_info.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, extract_system_info);
-%include "grgsm/misc_utils/extract_immediate_assignment.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, extract_immediate_assignment);
-%include "grgsm/misc_utils/controlled_rotator_cc.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, controlled_rotator_cc);
-%include "grgsm/misc_utils/message_printer.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, message_printer);
-%include "grgsm/misc_utils/tmsi_dumper.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, tmsi_dumper);
-%include "grgsm/misc_utils/message_file_sink.h"
-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/misc_utils/msg_to_tag.h"
-GR_SWIG_BLOCK_MAGIC2(gsm, msg_to_tag);
-%include "grgsm/misc_utils/controlled_fractional_resampler_cc.h"
-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/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);
-<<<<<<< HEAD
-%include "grgsm/trx_interface/trx.h"
-GR_SWIG_BLOCK_MAGIC2(grgsm, trx);
-=======
->>>>>>> development
