diff --git a/bcc/criticalstat.py b/bcc/criticalstat.py
index 261bd3e..9a91a0e 100755
--- a/bcc/criticalstat.py
+++ b/bcc/criticalstat.py
@@ -91,6 +91,23 @@
 BPF_PERCPU_ARRAY(isidle, u64, 1);
 BPF_PERF_OUTPUT(events);
 
+/*
+ * In the below code we install tracepoint probes on preempt or
+ * IRQ disable/enable critical sections and idle events, the cases
+ * are combinations of 4 different states.
+ * The states are defined as:
+ * CSenter: A critical section has been entered. Either due to
+ *          preempt disable or irq disable.
+ * CSexit: A critical section has been exited. Either due to
+ *         preempt enable or irq enable.
+ * Ienter: The CPU has entered an idle state.
+ * Iexit: The CPU has exited an idle state.
+ *
+ * The scenario we are trying to detect is if there is an overlap
+ * between Critical sections and idle entry/exit. If there are any
+ * such cases, we avoid recording those critical sections since they
+ * are not worth while to record and just add noise.
+ */
 TRACEPOINT_PROBE(power, cpu_idle)
 {
     int idx = 0;
@@ -111,11 +128,9 @@
 
     // Mark CPU as actively within idle or not.
     if (args->state < 100) {
-        bpf_trace_printk(\"Setting idle\\n\");
         val = 1;
         isidle.update(&idx, &val);
     } else {
-        bpf_trace_printk(\"Resetting idle\\n\");
         val = 0;
         isidle.update(&idx, &val);
     }
@@ -150,20 +165,17 @@
     // Handle the case Ienter, CSenter, CSexit, Iexit
     // Handle the case Ienter, CSenter, Iexit, CSexit
     if (in_idle()) {
-        bpf_trace_printk(\"disable: In idle, resetting\\n\");
         reset_state();
         return 0;
     }
 
     u64 ts = bpf_ktime_get_ns();
 
-    bpf_trace_printk(\"Entered new section, setting time to %lu\\n\", (unsigned long)ts);
     s.idle_skip = 0;
     s.addr_offs[START_CALLER_OFF] = args->caller_offs;
     s.addr_offs[START_PARENT_OFF] = args->parent_offs;
     s.ts = ts;
     s.active = 1;
-    bpf_trace_printk(\"Finished storing\\n\", (unsigned long)ts);
 
     sts.update(&idx, &s);
     return 0;
@@ -178,15 +190,12 @@
     // Handle the case CSenter, Ienter, CSexit, Iexit
     // Handle the case Ienter, CSenter, CSexit, Iexit
     if (in_idle()) {
-        bpf_trace_printk(\"enable: In idle, resetting\\n\");
         reset_state();
         return 0;
     }
 
-    bpf_trace_printk(\"enable: start lookup\\n\");
 
     stdp = sts.lookup(&idx);
-    bpf_trace_printk(\"enable: start read\\n\");
     bpf_probe_read(&std, sizeof(struct start_data), stdp);
 
     // Handle the case Ienter, Csenter, Iexit, Csexit
@@ -201,18 +210,15 @@
         return 0;
     }
 
-    bpf_trace_printk(\"enable: start gettime\\n\");
     end_ts = bpf_ktime_get_ns();
     start_ts = std.ts;
 
     if (start_ts > end_ts) {
-        bpf_trace_printk("ERROR: start < end\\n");
         reset_state();
         return 0;
     }
 
     diff = end_ts - start_ts;
-    bpf_trace_printk(\"Exited section, diff is %lu\\n\", (unsigned long)diff);
 
     if (diff < DURATION) {
         reset_state();
@@ -232,10 +238,7 @@
         data.stack_id = stack_traces.get_stackid(args, 0);
         data.time = diff;
         data.cpu = bpf_get_smp_processor_id();
-        bpf_trace_printk(\"Large diff found: %lu\\n\", (unsigned long)diff);
         events.perf_submit(args, &data, sizeof(data));
-    } else {
-        bpf_trace_printk("ERROR: Couldn't get process name\\n");
     }
 
     reset_state();
