diff --git a/sdcard/rootfs/root/pwnagotchi/scripts/core/__init__.py b/sdcard/rootfs/root/pwnagotchi/scripts/core/__init__.py
deleted file mode 100644
index eb718d3..0000000
--- a/sdcard/rootfs/root/pwnagotchi/scripts/core/__init__.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import glob
-import os
-import time
-import subprocess
-
-
-def secs_to_hhmmss(secs):
-    mins, secs = divmod(secs, 60)
-    hours, mins = divmod(mins, 60)
-    return '%02d:%02d:%02d' % (hours, mins, secs)
-
-
-def total_unique_handshakes(path):
-    expr = os.path.join(path, "*.pcap")
-    return len(glob.glob(expr))
-
-
-def iface_address(ifname):
-    output = subprocess.getoutput("/usr/sbin/ifconfig %s" % ifname)
-    for line in output.split("\n"):
-        line = line.strip()
-        if line.startswith("inet "):
-            return line.split(' ')[1].strip()
-    return None
-
-
-def iface_channels(ifname):
-    channels = []
-    output = subprocess.getoutput("/sbin/iwlist %s freq" % ifname)
-    for line in output.split("\n"):
-        line = line.strip()
-        if line.startswith("Channel "):
-            channels.append(int(line.split()[1]))
-    return channels
-
-
-def led(on=True):
-    with open('/sys/class/leds/led0/brightness', 'w+t') as fp:
-        fp.write("%d" % (0 if on is True else 1))
-
-
-def blink(times=1, delay=0.3):
-    for t in range(0, times):
-        led(True)
-        time.sleep(delay)
-        led(False)
-        time.sleep(delay)
-    led(True)
diff --git a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/agent.py b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/agent.py
index 69c594e..fe1455c 100644
--- a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/agent.py
+++ b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/agent.py
@@ -9,6 +9,7 @@ import _thread
 
 import core
 
+import pwnagotchi.utils as utils
 import pwnagotchi.plugins as plugins
 from bettercap.client import Client
 from pwnagotchi.mesh.utils import AsyncAdvertiser
@@ -30,7 +31,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
         self._started_at = time.time()
         self._filter = None if config['main']['filter'] is None else re.compile(config['main']['filter'])
         self._current_channel = 0
-        self._supported_channels = core.iface_channels(config['main']['iface'])
+        self._supported_channels = utils.iface_channels(config['main']['iface'])
         self._view = view
         self._access_points = []
         self._last_pwnd = None
@@ -252,7 +253,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
 
     def _update_uptime(self, s):
         secs = time.time() - self._started_at
-        self._view.set('uptime', core.secs_to_hhmmss(secs))
+        self._view.set('uptime', utils.secs_to_hhmmss(secs))
         self._view.set('epoch', '%04d' % self._epoch.epoch)
 
     def _update_counters(self):
@@ -272,7 +273,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
         if new_shakes > 0:
             self._epoch.track(handshake=True, inc=new_shakes)
 
-        tot = core.total_unique_handshakes(self._config['bettercap']['handshakes'])
+        tot = utils.total_unique_handshakes(self._config['bettercap']['handshakes'])
         txt = '%d (%d)' % (len(self._handshakes), tot)
 
         if self._last_pwnd is not None:
@@ -285,7 +286,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
 
     def _update_advertisement(self, s):
         run_handshakes = len(self._handshakes)
-        tot_handshakes = core.total_unique_handshakes(self._config['bettercap']['handshakes'])
+        tot_handshakes = utils.total_unique_handshakes(self._config['bettercap']['handshakes'])
         started = s['started_at'].split('.')[0]
         started = datetime.strptime(started, '%Y-%m-%dT%H:%M:%S')
         started = time.mktime(started.timetuple())
diff --git a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ai/epoch.py b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ai/epoch.py
index 0ef7869..11c2b6d 100644
--- a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ai/epoch.py
+++ b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ai/epoch.py
@@ -2,8 +2,8 @@ import time
 import threading
 import logging
 
-import core
 import pwnagotchi
+import pwnagotchi.utils as utils
 import pwnagotchi.mesh.wifi as wifi
 
 from pwnagotchi.ai.reward import RewardFunction
@@ -174,22 +174,22 @@ class Epoch(object):
         self._epoch_data_ready.set()
 
         logging.info("[epoch %d] duration=%s slept_for=%s blind=%d inactive=%d active=%d hops=%d missed=%d "
-                 "deauths=%d assocs=%d handshakes=%d cpu=%d%% mem=%d%% temperature=%dC reward=%s" % (
-                     self.epoch,
-                     core.secs_to_hhmmss(self.epoch_duration),
-                     core.secs_to_hhmmss(self.num_slept),
-                     self.blind_for,
-                     self.inactive_for,
-                     self.active_for,
-                     self.num_hops,
-                     self.num_missed,
-                     self.num_deauths,
-                     self.num_assocs,
-                     self.num_shakes,
-                     cpu * 100,
-                     mem * 100,
-                     temp,
-                     self._epoch_data['reward']))
+                     "deauths=%d assocs=%d handshakes=%d cpu=%d%% mem=%d%% temperature=%dC reward=%s" % (
+                         self.epoch,
+                         utils.secs_to_hhmmss(self.epoch_duration),
+                         utils.secs_to_hhmmss(self.num_slept),
+                         self.blind_for,
+                         self.inactive_for,
+                         self.active_for,
+                         self.num_hops,
+                         self.num_missed,
+                         self.num_deauths,
+                         self.num_assocs,
+                         self.num_shakes,
+                         cpu * 100,
+                         mem * 100,
+                         temp,
+                         self._epoch_data['reward']))
 
         self.epoch += 1
         self.epoch_started = now
diff --git a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ui/view.py b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ui/view.py
index ca748a0..78e75b6 100644
--- a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ui/view.py
+++ b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/ui/view.py
@@ -4,7 +4,7 @@ import time
 import logging
 from PIL import Image, ImageDraw
 
-import core
+import pwnagotchi.utils as utils
 import pwnagotchi.plugins as plugins
 from pwnagotchi.voice import Voice
 
@@ -86,8 +86,9 @@ class View(object):
 
             'face': Text(value=faces.SLEEP, position=face_pos, color=BLACK, font=fonts.Huge),
 
-            'friend_face': Text(value=None, position=(0, (self._height * 0.88) - 15 ), font=fonts.Bold, color=BLACK),
-            'friend_name': Text(value=None, position=(40,(self._height * 0.88) - 13 ), font=fonts.BoldSmall, color=BLACK),
+            'friend_face': Text(value=None, position=(0, (self._height * 0.88) - 15), font=fonts.Bold, color=BLACK),
+            'friend_name': Text(value=None, position=(40, (self._height * 0.88) - 13), font=fonts.BoldSmall,
+                                color=BLACK),
 
             'name': Text(value='%s>' % 'pwnagotchi', position=name_pos, color=BLACK, font=fonts.Bold),
 
@@ -166,7 +167,7 @@ class View(object):
         self.set('channel', '-')
         self.set('aps', "%d" % log.associated)
         self.set('shakes', '%d (%s)' % (log.handshakes, \
-                                        core.total_unique_handshakes(self._config['bettercap']['handshakes'])))
+                                        utils.total_unique_handshakes(self._config['bettercap']['handshakes'])))
         self.set_closest_peer(log.last_peer)
 
     def is_normal(self):
diff --git a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/utils.py b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/utils.py
index 8761a59..28a627a 100644
--- a/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/utils.py
+++ b/sdcard/rootfs/root/pwnagotchi/scripts/pwnagotchi/utils.py
@@ -1,6 +1,9 @@
-import yaml
-import os
 import logging
+import glob
+import os
+import time
+import subprocess
+import yaml
 
 
 # https://stackoverflow.com/questions/823196/yaml-merge-in-python
@@ -40,3 +43,38 @@ def setup_logging(args, config):
     console_handler = logging.StreamHandler()
     console_handler.setFormatter(formatter)
     root.addHandler(console_handler)
+
+
+def secs_to_hhmmss(secs):
+    mins, secs = divmod(secs, 60)
+    hours, mins = divmod(mins, 60)
+    return '%02d:%02d:%02d' % (hours, mins, secs)
+
+
+def total_unique_handshakes(path):
+    expr = os.path.join(path, "*.pcap")
+    return len(glob.glob(expr))
+
+
+def iface_channels(ifname):
+    channels = []
+    output = subprocess.getoutput("/sbin/iwlist %s freq" % ifname)
+    for line in output.split("\n"):
+        line = line.strip()
+        if line.startswith("Channel "):
+            channels.append(int(line.split()[1]))
+    return channels
+
+
+def led(on=True):
+    with open('/sys/class/leds/led0/brightness', 'w+t') as fp:
+        fp.write("%d" % (0 if on is True else 1))
+
+
+def blink(times=1, delay=0.3):
+    for t in range(0, times):
+        led(True)
+        time.sleep(delay)
+        led(False)
+        time.sleep(delay)
+    led(True)