diff --git a/grc/misc_utils/gsm_extract_immediate_assignment.xml b/grc/misc_utils/gsm_extract_immediate_assignment.xml
index 92a2b90..788ea45 100644
--- a/grc/misc_utils/gsm_extract_immediate_assignment.xml
+++ b/grc/misc_utils/gsm_extract_immediate_assignment.xml
@@ -3,7 +3,7 @@
   <name>Extract immediate assignment</name>
   <key>gsm_extract_immediate_assignment</key>
   <import>import grgsm</import>
-  <make>grgsm.extract_immediate_assignment($print_immediate_assignments)</make>
+  <make>grgsm.extract_immediate_assignment($print_immediate_assignments, $ignore_gprs)</make>
 
   <param>
     <name>Print</name>
@@ -19,6 +19,20 @@
       <key>True</key>
     </option>
   </param>
+  <param>
+    <name>Ignore GPRS</name>
+    <key>ignore_gprs</key>
+    <value>False</value>
+    <type>bool</type>
+    <option>
+      <name>False</name>
+      <key>False</key>
+    </option>
+    <option>
+      <name>True</name>
+      <key>True</key>
+    </option>
+  </param>
 
   <sink>
     <name>msgs</name>
diff --git a/include/grgsm/misc_utils/extract_immediate_assignment.h b/include/grgsm/misc_utils/extract_immediate_assignment.h
index 64b5f1e..361a9c3 100644
--- a/include/grgsm/misc_utils/extract_immediate_assignment.h
+++ b/include/grgsm/misc_utils/extract_immediate_assignment.h
@@ -48,7 +48,7 @@
        * class. gsm::extract_immediate_assignment::make is the public interface for
        * creating new instances.
        */
-      static sptr make(bool print_immediate_assignments=false);
+      static sptr make(bool print_immediate_assignments=false, bool ignore_gprs=false);
       virtual std::vector<int> get_frame_numbers() = 0;
       virtual std::vector<std::string> get_channel_types() = 0;
       virtual std::vector<int> get_timeslots() = 0;
diff --git a/lib/misc_utils/extract_immediate_assignment_impl.cc b/lib/misc_utils/extract_immediate_assignment_impl.cc
index db3318b..e3bce37 100644
--- a/lib/misc_utils/extract_immediate_assignment_impl.cc
+++ b/lib/misc_utils/extract_immediate_assignment_impl.cc
@@ -90,6 +90,11 @@
             }
             else
             {
+                // We return if ignore_gprs is set true
+                if (d_ignore_gprs)
+                {
+                    return;
+                }
                 current.channel_type = "GPRS - Temporary Block Flow TBF";
             }
 
@@ -282,21 +287,22 @@
     }
 
     extract_immediate_assignment::sptr
-    extract_immediate_assignment::make(bool print_immediate_assignments)
+    extract_immediate_assignment::make(bool print_immediate_assignments, bool ignore_gprs)
     {
       return gnuradio::get_initial_sptr
-        (new extract_immediate_assignment_impl(print_immediate_assignments));
+        (new extract_immediate_assignment_impl(print_immediate_assignments, ignore_gprs));
     }
 
     /*
      * The private constructor
      */
-    extract_immediate_assignment_impl::extract_immediate_assignment_impl(bool print_immediate_assignments)
+    extract_immediate_assignment_impl::extract_immediate_assignment_impl(bool print_immediate_assignments, bool ignore_gprs)
       : gr::block("extract_immediate_assignment",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
     {
         d_print_immediate_assignments = print_immediate_assignments;
+        d_ignore_gprs = ignore_gprs;
         message_port_register_in(pmt::mp("msgs"));
         set_msg_handler(pmt::mp("msgs"), boost::bind(&extract_immediate_assignment_impl::process_message, this, _1));
     }
diff --git a/lib/misc_utils/extract_immediate_assignment_impl.h b/lib/misc_utils/extract_immediate_assignment_impl.h
index 1e99f7c..80e02a5 100644
--- a/lib/misc_utils/extract_immediate_assignment_impl.h
+++ b/lib/misc_utils/extract_immediate_assignment_impl.h
@@ -57,6 +57,7 @@
             void process_message(pmt::pmt_t msg);
             immediate_assignment_map d_assignment_map;
             bool d_print_immediate_assignments;
+            bool d_ignore_gprs;
         public:
             virtual std::vector<int> get_frame_numbers();
             virtual std::vector<std::string> get_channel_types();
@@ -68,7 +69,7 @@
             virtual std::vector<int> get_arfcns();
             virtual std::vector<int> get_timing_advances();
             virtual std::vector<std::string> get_mobile_allocations();
-            extract_immediate_assignment_impl(bool print_immediate_assignments=false);
+            extract_immediate_assignment_impl(bool print_immediate_assignments=false, bool ignore_gprs=false);
             ~extract_immediate_assignment_impl();
     };
   } // namespace gsm
