diff --git a/src/main.cpp b/src/main.cpp
index b34a91ce1a2c35a90516bb8f221d0b7e76671f5f..ceb3ca9797d71a4189b59e0f0aa6a075f2496db2 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -82,13 +82,15 @@ void handleEvent(AceButton * /* button */, uint8_t eventType,
   }
 }
 
-void setup()
+void setupPins()
 {
-  Serial.begin(115200);
-  Keyboard.begin();
-  pinMode(LED_BUILTIN_TX, INPUT); // switch off builtin LEDs
-  pinMode(LED_BUILTIN_RX, INPUT); // switch off builtin LEDs
+  pinMode(LED_BUILTIN_TX, INPUT); // switch off builtin TX LED
+  pinMode(LED_BUILTIN_RX, INPUT); // switch off builtin RX LED
   pinMode(BUTTON_PIN, INPUT_PULLUP);
+}
+
+void setupButton()
+{
   ButtonConfig *buttonConfig = button.getButtonConfig();
   buttonConfig->setEventHandler(handleEvent);
   buttonConfig->setFeature(ButtonConfig::kFeatureDoubleClick);
@@ -96,18 +98,52 @@ void setup()
   buttonConfig->setFeature(ButtonConfig::kFeatureSuppressAfterLongPress);
   buttonConfig->setDoubleClickDelay(DOUBLECLICK_DELAY);
   buttonConfig->setLongPressDelay(DOUBLECLICK_DELAY + 1);
+}
+
+void setupLEDs()
+{
   FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
-  delay(1000);
+  FastLED.setBrightness(MAX_BRIGHTNESS);
+  for (size_t i = 0; i < 3; i++)
+  {
+    for (size_t i = 0; i < NUM_LEDS; i++)
+    {
+      leds[i] = CRGB::Blue;
+      FastLED.show();
+      delay(100);
+      leds[i] = CRGB::Black;
+      FastLED.show();
+    }
+  }
+}
+
+void setup()
+{
+  Serial.begin(115200);
+  delay(500);
+  Keyboard.begin();
+  setupPins();
+  setupButton();
+  setupLEDs();
   Serial.flush();
   Serial.println();
   Serial.println("Ultimute ready!");
   Serial.println();
 }
 
-void loop()
+void checkButton()
 {
-  button.check();
+  static unsigned long prev = millis();
+  unsigned long now = millis();
+  if (now - prev > 5)
+  {
+    button.check();
+    prev = now;
+  }
+}
 
+void handleButtonState()
+{
   if (muted)
   {
     FastLED.setBrightness(MIN_BRIGHTNESS);
@@ -125,7 +161,11 @@ void loop()
     breath = map(breath, 0, 255, MIN_BRIGHTNESS, MAX_BRIGHTNESS);
     FastLED.setBrightness(breath);
   }
+}
 
+void loop()
+{
+  checkButton();
+  handleButtonState();
   FastLED.show();
-  delay(5);
 }