diff --git a/epicardium/main.c b/epicardium/main.c
index 929fdb677a89af1fd62af12b237a55ea4d786835..b2bd12e572e6433665c56ecdec807b9820a6bfbe 100644
--- a/epicardium/main.c
+++ b/epicardium/main.c
@@ -1,10 +1,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include "max32665.h"
 #include "uart.h"
 #include "cdcacm.h"
 
 #include "card10.h"
+#include "pmic.h"
 #include "leds.h"
 #include "api/dispatcher.h"
 #include "serial.h"
@@ -35,14 +37,23 @@ void vApiDispatcher(void*pvParameters)
 	}
 }
 
+static void pmic_button(bool falling)
+{
+	if (falling) {
+		MXC_GCR->rstr0 = MXC_F_GCR_RSTR0_SYSTEM;
+	}
+}
+
 int main(void)
 {
 	card10_init();
 	card10_diag();
 
+	pmic_set_button_callback(pmic_button);
+
 	cdcacm_init();
 
-	printf("Initializing tasks ...\n");
+	printf("=> Initializing tasks ...\n");
 
 	/* Serial */
 	if (xTaskCreate(
@@ -69,12 +80,13 @@ int main(void)
 		abort();
 	}
 
-	printf("Initializing dispatcher ...\n");
+	printf("=> Initializing dispatcher ...\n");
 	api_dispatcher_init();
 
-	printf("Staring core1 payload ...\n");
+	printf("=> Starting core1 payload ...\n");
 	core1_start();
 
+	printf("=> Starting FreeRTOS ...\n");
 	vTaskStartScheduler();
 	printf("ERROR: FreeRTOS did not start due to unknown error!\n");
 }