diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index 0a91a0d..e8957d6 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -19,33 +19,36 @@
 
 include(GrPython)
 
-#SET(APPS_DIR ${CMAKE_SOURCE_DIR}/apps)
-
-#SET(GRCC_COMMAND ${PC_GNURADIO_RUNTIME_PREFIX}/${GR_RUNTIME_DIR}/grcc)
-#SET(BLOCK_PATH ../grc/)
-
-#ADD_CUSTOM_TARGET(airprobe_file.py ALL)
-#ADD_CUSTOM_COMMAND(
-# TARGET airprobe_file.py
-# COMMAND GRC_BLOCKS_PATH=${BLOCK_PATH} ${GRCC_COMMAND} -d ${CMAKE_CURRENT_BINARY_DIR} 
-# ARGS "airprobe_file.grc"
-# WORKING_DIRECTORY ${APPS_DIR}
-#)
-
-#ADD_CUSTOM_TARGET(airprobe_rtlsdr.py ALL)
-#ADD_CUSTOM_COMMAND(
-# TARGET airprobe_rtlsdr.py
-# COMMAND GRC_BLOCKS_PATH=${BLOCK_PATH} ${GRCC_COMMAND} -d ${CMAKE_CURRENT_BINARY_DIR} 
-# ARGS "airprobe_rtlsdr.grc"
-# WORKING_DIRECTORY ${APPS_DIR}
-#)
-
 GR_PYTHON_INSTALL(
     PROGRAMS
-#    ${CMAKE_CURRENT_BINARY_DIR}/airprobe_rtlsdr.py
-    airprobe_rtlsdr.py
-    airprobe_decode.py
-    airprobe_rtlsdr_capture.py
-    airprobe_rtlsdr_scanner.py
+    grgsm_airprobe.py
+    grgsm_capture.py
+    grgsm_decode.py
+    grgsm_scanner.py
+    gsm_channelize.py
+    DESTINATION bin
+)
+
+#create logical links in order to keep legacy names of apps
+macro(CREATE_SYMLINK _source _dest)
+    set(source ${CMAKE_CURRENT_SOURCE_DIR}/${_source})
+    set(dest ${CMAKE_CURRENT_BINARY_DIR}/${_dest})
+    list(APPEND symlinks ${dest})
+    add_custom_command(
+        DEPENDS ${source} OUTPUT ${dest}
+        COMMAND ln -sf ${_source} ${_dest}
+    )
+endmacro(CREATE_SYMLINK)
+
+CREATE_SYMLINK(grgsm_decode.py airprobe_decode.py)
+CREATE_SYMLINK(grgsm_capture.py airprobe_rtlsdr_capture.py)
+CREATE_SYMLINK(grgsm_airprobe.py airprobe_rtlsdr.py)
+CREATE_SYMLINK(grgsm_scanner.py airprobe_rtlsdr_scanner.py)
+
+add_custom_target(multi_rtl_grc_xml_blocks ALL DEPENDS ${symlinks})
+
+install(
+    PROGRAMS
+    ${symlinks}
     DESTINATION bin
 )
diff --git a/apps/airprobe_rtlsdr.grc b/apps/grgsm_airprobe.grc
similarity index 99%
rename from apps/airprobe_rtlsdr.grc
rename to apps/grgsm_airprobe.grc
index e30a2ef..a603103 100644
--- a/apps/airprobe_rtlsdr.grc
+++ b/apps/grgsm_airprobe.grc
@@ -46,7 +46,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>airprobe_rtlsdr</value>
+      <value>grgsm_airprobe</value>
     </param>
     <param>
       <key>max_nouts</key>
diff --git a/apps/airprobe_rtlsdr.py b/apps/grgsm_airprobe.py
similarity index 96%
rename from apps/airprobe_rtlsdr.py
rename to apps/grgsm_airprobe.py
index 97c6097..8c2245f 100755
--- a/apps/airprobe_rtlsdr.py
+++ b/apps/grgsm_airprobe.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 ##################################################
 # GNU Radio Python Flow Graph
-# Title: Airprobe Rtlsdr
+# Title: Gr-gsm Airprobe
 # Generated: Wed Sep  2 21:46:35 2015
 ##################################################
 
@@ -33,12 +33,12 @@
 import time
 
 
-class airprobe_rtlsdr(gr.top_block, Qt.QWidget):
+class grgsm_airprobe(gr.top_block, Qt.QWidget):
 
     def __init__(self, fc=939.4e6, gain=30, ppm=0, samp_rate=2000000.052982, shiftoff=400e3):
-        gr.top_block.__init__(self, "Airprobe Rtlsdr")
+        gr.top_block.__init__(self, "Gr-gsm Airprobe")
         Qt.QWidget.__init__(self)
-        self.setWindowTitle("Airprobe Rtlsdr")
+        self.setWindowTitle("Gr-gsm Airprobe")
         try:
              self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
         except:
@@ -55,7 +55,7 @@
         self.top_grid_layout = Qt.QGridLayout()
         self.top_layout.addLayout(self.top_grid_layout)
 
-        self.settings = Qt.QSettings("GNU Radio", "airprobe_rtlsdr")
+        self.settings = Qt.QSettings("GNU Radio", "grgsm_airprobe")
         self.restoreGeometry(self.settings.value("geometry").toByteArray())
 
         ##################################################
@@ -180,7 +180,7 @@
         self.connect((self.rtlsdr_source_0, 0), (self.blocks_rotator_cc_0, 0))    
 
     def closeEvent(self, event):
-        self.settings = Qt.QSettings("GNU Radio", "airprobe_rtlsdr")
+        self.settings = Qt.QSettings("GNU Radio", "grgsm_airprobe")
         self.settings.setValue("geometry", self.saveGeometry())
         event.accept()
 
@@ -266,7 +266,7 @@
 #        Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
     Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
     qapp = Qt.QApplication(sys.argv)
-    tb = airprobe_rtlsdr(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
+    tb = grgsm_airprobe(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
     tb.start()
     tb.show()
 
diff --git a/apps/airprobe_rtlsdr_capture.py b/apps/grgsm_capture.py
similarity index 97%
rename from apps/airprobe_rtlsdr_capture.py
rename to apps/grgsm_capture.py
index 909ce2e..98696f4 100755
--- a/apps/airprobe_rtlsdr_capture.py
+++ b/apps/grgsm_capture.py
@@ -36,11 +36,11 @@
 import sys
 
 
-class airprobe_rtlsdr_capture(gr.top_block):
+class grgsm_capture(gr.top_block):
 
     def __init__(self, fc, gain, samp_rate, ppm, arfcn, cfile=None, burst_file=None, band=None, verbose=False, rec_length=None):
 
-        gr.top_block.__init__(self, "Airprobe RTL-SDR Capture")
+        gr.top_block.__init__(self, "Gr-gsm Capture")
                 
         ##################################################
         # Parameters
@@ -255,7 +255,7 @@
                     arfcn = grgsm.arfcn.downlink2arfcn(options.fc, band)
                     break
      
-    tb = airprobe_rtlsdr_capture(fc=fc, gain=options.gain, samp_rate=options.samp_rate,
+    tb = grgsm_capture(fc=fc, gain=options.gain, samp_rate=options.samp_rate,
                          ppm=options.ppm, arfcn=arfcn, cfile=options.cfile, 
                          burst_file=options.burst_file, band=options.band, verbose=options.verbose,
                          rec_length=options.rec_length)
diff --git a/apps/airprobe_decode.py b/apps/grgsm_decode.py
similarity index 98%
rename from apps/airprobe_decode.py
rename to apps/grgsm_decode.py
index ceb38ef..099d680 100755
--- a/apps/airprobe_decode.py
+++ b/apps/grgsm_decode.py
@@ -32,7 +32,7 @@
 import socket
 
 
-class airprobe_decoder(gr.top_block):
+class grgsm_decoder(gr.top_block):
 
     def __init__(self, timeslot=0, subslot=None, chan_mode='BCCH',
                  burst_file=None,
@@ -41,7 +41,7 @@
                  speech_file=None, speech_codec=None,
                  verbose=False):
 
-        gr.top_block.__init__(self, "Airprobe Decode")
+        gr.top_block.__init__(self, "Gr-gsm Decode")
 
         ##################################################
         # Parameters
@@ -364,7 +364,7 @@
     sock.bind(("localhost", 4729))
 
     # instanciate decoder
-    tb = airprobe_decoder(timeslot=options.timeslot, subslot=options.subslot, chan_mode=options.chan_mode,
+    tb = grgsm_decoder(timeslot=options.timeslot, subslot=options.subslot, chan_mode=options.chan_mode,
                           burst_file=options.burst_file,
                           cfile=options.cfile, arfcn=arfcn, fc=fc, samp_rate=options.samp_rate,
                           a5=options.a5, a5_kc=kc,
diff --git a/apps/airprobe_rtlsdr_scanner.py b/apps/grgsm_scanner.py
similarity index 100%
rename from apps/airprobe_rtlsdr_scanner.py
rename to apps/grgsm_scanner.py
