diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c
index f753d85a0da4dc16496ad1d8e382e9a0e84bbfb6..a93c8c6d67447cb84bf3ee4ba522809a842b52dc 100644
--- a/epicardium/modules/hardware.c
+++ b/epicardium/modules/hardware.c
@@ -173,6 +173,24 @@ int hardware_init(void)
  */
 int hardware_reset(void)
 {
-	card10_init();
+	/*
+	 * API Dispatcher & API Interrupts
+	 */
+	api_interrupt_init();
+	api_dispatcher_init();
+
+	/*
+	 * LEDs
+	 */
+	leds_init();
+	epic_leds_set_rocket(0, 0);
+	epic_leds_set_rocket(1, 0);
+	epic_leds_set_rocket(2, 0);
+
+	/*
+	 * Display
+	 */
+	display_init_slim();
+
 	return 0;
 }
diff --git a/epicardium/modules/lifecycle.c b/epicardium/modules/lifecycle.c
index b3ce83c1862b09ea4f2e095c1031f67357bce982..992b0d5ff0f4a5d1c84808374e44baecc54cd3d5 100644
--- a/epicardium/modules/lifecycle.c
+++ b/epicardium/modules/lifecycle.c
@@ -114,10 +114,12 @@ static int do_load(struct load_info *info)
 	core1_wait_ready();
 
 	/*
-	 * Reinitialize API
+	 * Reinitialize Hardware & Drivers
 	 */
-	api_dispatcher_init();
-	api_interrupt_init();
+	res = hardware_reset();
+	if (res < 0) {
+		return res;
+	}
 
 	switch (info->type) {
 	case PL_PYTHON_SCRIPT: