diff --git a/apps/airprobe_rtlsdr_scanner.py b/apps/airprobe_rtlsdr_scanner.py
index 3ead0c9..4fd7c88 100755
--- a/apps/airprobe_rtlsdr_scanner.py
+++ b/apps/airprobe_rtlsdr_scanner.py
@@ -40,16 +40,16 @@
 
 #from wideband_receiver import *
 
-class receiver_with_decoder(gr.hier_block2):
+class receiver_with_decoder(grgsm.hier_block):
 
     def __init__(self, OSR=4, chan_num=0, fc=939.4e6, ppm=0, samp_rate=0.2e6):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "Receiver With Decoder",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(0, 0, 0),
         )
-        self.message_port_register_hier_in("bursts")
-        self.message_port_register_hier_in("msgs")
+        self.message_port_register_hier_out("bursts")
+        self.message_port_register_hier_out("msgs")
 
         ##################################################
         # Parameters
@@ -134,16 +134,16 @@
         self.samp_rate_out = samp_rate_out
 
 
-class wideband_receiver(gr.hier_block2):
+class wideband_receiver(grgsm.hier_block):
 
     def __init__(self, OSR=4, fc=939.4e6, samp_rate=0.4e6):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "Wideband receiver",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(0, 0, 0),
         )
-        self.message_port_register_hier_in("bursts")
-        self.message_port_register_hier_in("msgs")
+        self.message_port_register_hier_out("bursts")
+        self.message_port_register_hier_out("msgs")
         self.__init(OSR, fc, samp_rate)
     
     def __init(self, OSR=4, fc=939.4e6, samp_rate=0.4e6):
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index f68100a..04a97c2 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -38,7 +38,8 @@
     receiver/fcch_detector.py
     receiver/chirpz.py
     misc_utils/arfcn.py
-    misc_utils/clock_offset_corrector.py DESTINATION ${GR_PYTHON_DIR}/grgsm
+    misc_utils/clock_offset_corrector.py 
+    misc_utils/hier_block.py DESTINATION ${GR_PYTHON_DIR}/grgsm
 )
 
 ########################################################################
diff --git a/python/__init__.py b/python/__init__.py
index 0c50bdb..247c040 100644
--- a/python/__init__.py
+++ b/python/__init__.py
@@ -46,12 +46,14 @@
 
 # import any pure python here
 
+from hier_block import hier_block
 from fcch_burst_tagger import fcch_burst_tagger
 from sch_detector import sch_detector
 from fcch_detector import fcch_detector
 from clock_offset_corrector import clock_offset_corrector
 from gsm_input import gsm_input
 from gsm_wideband_input import gsm_wideband_input
+
 import arfcn
 
 
diff --git a/python/misc_utils/clock_offset_corrector.py b/python/misc_utils/clock_offset_corrector.py
index 403b513..b75d682 100644
--- a/python/misc_utils/clock_offset_corrector.py
+++ b/python/misc_utils/clock_offset_corrector.py
@@ -14,19 +14,16 @@
 import grgsm
 import math
 
-class clock_offset_corrector(gr.hier_block2):
+class clock_offset_corrector(grgsm.hier_block):
 
     def __init__(self, fc=936.6e6, ppm=0, samp_rate_in=1625000.0/6.0*4.0):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "Clock offset corrector",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
         )
-        if version(gr.version()) >= version('3.7.9'):
-            self.message_port_register_hier_in("ppm_in")
-        else:
-            self.message_port_register_hier_out("ppm_in")
-
+        self.message_port_register_hier_in("ppm_in")
+        
         ##################################################
         # Parameters
         ##################################################
diff --git a/python/misc_utils/hier_block.py b/python/misc_utils/hier_block.py
new file mode 100644
index 0000000..a3ca1e6
--- /dev/null
+++ b/python/misc_utils/hier_block.py
@@ -0,0 +1,19 @@
+from gnuradio import gr
+from distutils.version import LooseVersion as version
+
+#class created to solve incompatibility of reginstration of message inputs
+#that was introduced in gnuradio 3.7.9
+
+class hier_block(gr.hier_block2):
+    def message_port_register_hier_in(self, port_id):
+        if version(gr.version()) >= version('3.7.9'):
+            super(hier_block, self).message_port_register_hier_in(port_id)
+        else:
+            super(hier_block, self).message_port_register_hier_out(port_id)
+
+    def message_port_register_hier_out(self, port_id):
+        if version(gr.version()) >= version('3.7.9'):
+            super(hier_block, self).message_port_register_hier_out(port_id)
+        else:
+            super(hier_block, self).message_port_register_hier_in(port_id)
+
diff --git a/python/receiver/fcch_detector.py b/python/receiver/fcch_detector.py
index 70a3459..2f2a4ab 100644
--- a/python/receiver/fcch_detector.py
+++ b/python/receiver/fcch_detector.py
@@ -15,10 +15,10 @@
 from gnuradio.filter import firdes
 import grgsm
 
-class fcch_detector(gr.hier_block2):
+class fcch_detector(grgsm.hier_block):
 
     def __init__(self, OSR=4):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "FCCH bursts detector",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
diff --git a/python/receiver/gsm_input.py b/python/receiver/gsm_input.py
index 191f950..2de2f03 100644
--- a/python/receiver/gsm_input.py
+++ b/python/receiver/gsm_input.py
@@ -13,10 +13,10 @@
 from distutils.version import LooseVersion as version
 import grgsm
 
-class gsm_input(gr.hier_block2):
+class gsm_input(grgsm.hier_block):
 
     def __init__(self, ppm=0, osr=4, fc=940e6, samp_rate_in=1e6):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "GSM input adaptor",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
diff --git a/python/receiver/gsm_wideband_input.py b/python/receiver/gsm_wideband_input.py
index 3138885..9dee08d 100644
--- a/python/receiver/gsm_wideband_input.py
+++ b/python/receiver/gsm_wideband_input.py
@@ -14,10 +14,10 @@
 import grgsm.arfcn as arfcn
 import grgsm
 
-class gsm_wideband_input(gr.hier_block2):
+class gsm_wideband_input(grgsm.hier_block):
     def __init__(self, ppm=0, osr=4, fc=925.2e6, samp_rate_in=20e6, ca=[]):
         self.num_streams = len(ca)
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "GSM wideband input adaptor",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(self.num_streams, self.num_streams, gr.sizeof_gr_complex*1),
