diff --git a/preload/apps/en_count/__init__.py b/preload/apps/en_count/__init__.py
index 5e73eb86d0327e42722e76218ca2a3f324240412..9f41c91ae6e559d624852ca8e0ec02a1738be091 100644
--- a/preload/apps/en_count/__init__.py
+++ b/preload/apps/en_count/__init__.py
@@ -4,6 +4,8 @@ import time
 import vibra
 import display
 import color
+import buttons
+import leds
 
 DM_ADV_TYPE_FLAGS = 0x01
 DM_ADV_TYPE_16_UUID = 0x03
@@ -11,7 +13,14 @@ DM_ADV_TYPE_SERVICE_DATA = 0x16
 UUID = b"\x6f\xfd"
 TIMEOUT = 100
 
+MODE_OFF = 0
+MODE_ON_NEW_MAC = 1
+MODE_ON_RX = 2
+MODE_BOTH = 3
+
 seen = {}
+vib_mode = MODE_OFF
+led_mode = MODE_OFF
 
 
 def parse_advertisement_data(data):
@@ -37,12 +46,25 @@ def bytes2hex(bin, sep=""):
     return sep.join(["%02x" % x for x in bin])
 
 
-def process_covid_dada(mac, service_data, rssi, flags):
-    vibra.vibrate(10)
+def process_covid_data(mac, service_data, rssi, flags):
+    global vib_mode
+    if vib_mode in [MODE_ON_RX, MODE_BOTH]:
+        vibra.vibrate(10)
+
+    if vib_mode in [MODE_ON_NEW_MAC, MODE_BOTH] and mac not in seen:
+        vibra.vibrate(100)
+
+    if led_mode in [MODE_ON_RX, MODE_BOTH]:
+        leds.flash_rocket(0, 31, 20)
+
+    if led_mode in [MODE_ON_NEW_MAC, MODE_BOTH] and mac not in seen:
+        leds.flash_rocket(1, 31, 200)
+
     print(bytes2hex(mac, ":"), rssi, bytes2hex(service_data), flags)
 
     # try to produce a small int
-    seen[mac] = [int(time.time() - t0), flags]
+    last_rx_time = time.time() - t0
+    seen[mac] = [int(last_rx_time), flags]
 
 
 def prune():
@@ -73,7 +95,7 @@ def process_scan_report(scan_report):
                 if DM_ADV_TYPE_FLAGS in ads:
                     flags = ads[DM_ADV_TYPE_FLAGS]
                 # service data contains another copy of the service UUID
-                process_covid_dada(mac, ads[DM_ADV_TYPE_SERVICE_DATA][2:], rssi, flags)
+                process_covid_data(mac, ads[DM_ADV_TYPE_SERVICE_DATA][2:], rssi, flags)
 
 
 def ble_callback(_):
@@ -86,30 +108,28 @@ def ble_callback(_):
         process_scan_report(scan_report)
 
 
-t0 = time.time()
-disp = display.open()
-
-interrupt.set_callback(interrupt.BLE, ble_callback)
-interrupt.enable_callback(interrupt.BLE)
-
-sys_ble.scan_start()
-
-while True:
+def show_stats():
     seen_google = 0
     seen_apple = 0
+
     t = time.time() - t0
 
     t_min = t
-    for mac in seen:
-        if seen[mac][1]:
+
+    # Make a copy as `seen` could change in between
+    # and we're not locking it
+    seen_copy = seen.copy()
+    for mac in seen_copy:
+        info = seen_copy[mac]
+        if info[1]:
             seen_apple += 1
         else:
             seen_google += 1
-        if seen[mac][0] < t_min:
-            t_min = seen[mac][0]
+        if info[0] < t_min:
+            t_min = info[0]
     seen_total = seen_google + seen_apple
 
-    window = t - t_min
+    window = t - t_min if len(seen_copy) > 0 else min(TIMEOUT, t - last_rx_time)
 
     disp.clear()
     disp.print("Last %u s:" % window, posy=0, fg=color.WHITE)
@@ -117,6 +137,79 @@ while True:
     disp.print("Apple:  %d" % seen_apple, posy=40, fg=color.BLUE)
     disp.print("Total:  %d" % seen_total, posy=60, fg=color.WHITE)
     disp.update()
-    # print(seen)
 
-    time.sleep(1)
+
+t0 = time.time()
+last_rx_time = 0
+disp = display.open()
+v_old = 0
+pause = 1
+
+interrupt.set_callback(interrupt.BLE, ble_callback)
+interrupt.enable_callback(interrupt.BLE)
+
+
+disp.clear()
+disp.print(" Exp Notif", posy=0, fg=color.WHITE)
+disp.print("  Counter", posy=20, fg=color.WHITE)
+disp.print("Vib Mode ->", posy=40, fg=color.GREEN)
+disp.print("<- LED Mode", posy=60, fg=color.BLUE)
+disp.update()
+
+time.sleep(3)
+
+sys_ble.scan_start()
+
+while True:
+    v_new = buttons.read()
+    v = ~v_old & v_new
+    v_old = v_new
+
+    if v & buttons.TOP_RIGHT:
+        disp.clear()
+        disp.print("Vib Mode:", posy=0, fg=color.WHITE)
+        if vib_mode == MODE_OFF:
+            vib_mode = MODE_ON_NEW_MAC
+            disp.print("New MAC", posy=40, fg=color.YELLOW)
+        elif vib_mode == MODE_ON_NEW_MAC:
+            vib_mode = MODE_ON_RX
+            disp.print("Each RX", posy=40, fg=color.BLUE)
+        elif vib_mode == MODE_ON_RX:
+            vib_mode = MODE_BOTH
+            disp.print("MAC", posy=40, fg=color.YELLOW)
+            disp.print("&", posy=40, posx=14 * 4, fg=color.WHITE)
+            disp.print("RX", posy=40, posx=14 * 6, fg=color.BLUE)
+        elif vib_mode == MODE_BOTH:
+            vib_mode = MODE_OFF
+            disp.print("Vib off", posy=40, fg=color.WHITE)
+
+        disp.update()
+        pause = 20
+
+    if v & buttons.BOTTOM_LEFT:
+        disp.clear()
+        disp.print("LED Mode:", posy=0, fg=color.WHITE)
+        if led_mode == MODE_OFF:
+            led_mode = MODE_ON_NEW_MAC
+            disp.print("New MAC", posy=40, fg=color.YELLOW)
+        elif led_mode == MODE_ON_NEW_MAC:
+            led_mode = MODE_ON_RX
+            disp.print("Each RX", posy=40, fg=color.BLUE)
+        elif led_mode == MODE_ON_RX:
+            led_mode = MODE_BOTH
+            disp.print("MAC", posy=40, fg=color.YELLOW)
+            disp.print("&", posy=40, posx=14 * 4, fg=color.WHITE)
+            disp.print("RX", posy=40, posx=14 * 6, fg=color.BLUE)
+        elif led_mode == MODE_BOTH:
+            led_mode = MODE_OFF
+            disp.print("LED off", posy=40, fg=color.WHITE)
+
+        disp.update()
+        pause = 20
+
+    pause -= 1
+    if pause == 0:
+        show_stats()
+        pause = 10
+
+    time.sleep(0.1)