diff --git a/epicardium/main.c b/epicardium/main.c
index c1adc53667d1f28a4ee585fcac72c946c5b5bbea..4547d544858afb43e9abcc0c5d26c845a65b3b03 100644
--- a/epicardium/main.c
+++ b/epicardium/main.c
@@ -16,13 +16,6 @@
 
 TaskHandle_t dispatcher_task_id;
 
-/* TODO: Move out of main.c */
-void epic_leds_set(int led, uint8_t r, uint8_t g, uint8_t b)
-{
-	leds_set(led, r, g, b);
-	leds_update();
-}
-
 /*
  * API dispatcher task.  This task will sleep until an API call is issued and
  * then wake up to dispatch it.
diff --git a/epicardium/meson.build b/epicardium/meson.build
index 88726887b7d67b9644ceff2a8b1f2c0d45d20002..27848d2a2bef9a9f1996965687e479f9beb6fcb5 100644
--- a/epicardium/meson.build
+++ b/epicardium/meson.build
@@ -67,6 +67,7 @@ elf = executable(
   'main.c',
   'serial.c',
   'support.c',
+  'modules/leds.c',
   dependencies: [libcard10, max32665_startup_core0, maxusb],
   link_with: [api_dispatcher_lib, freertos],
   link_whole: [max32665_startup_core0_lib, board_card10_lib],
diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
new file mode 100644
index 0000000000000000000000000000000000000000..c4a3f977b8886eadcaac06d818541e87468339a1
--- /dev/null
+++ b/epicardium/modules/leds.c
@@ -0,0 +1,7 @@
+#include "leds.h"
+
+void epic_leds_set(int led, uint8_t r, uint8_t g, uint8_t b)
+{
+	leds_set(led, r, g, b);
+	leds_update();
+}
\ No newline at end of file