diff --git a/src/boards/Groundstation/Automated/Leds/Leds.cpp b/src/boards/Groundstation/Automated/Leds/Leds.cpp
index e01d49c24981b62eaab31bd78d97a8a5871b5099..80d82cd63f815e0834028b322f85675211ce9efd 100644
--- a/src/boards/Groundstation/Automated/Leds/Leds.cpp
+++ b/src/boards/Groundstation/Automated/Leds/Leds.cpp
@@ -33,10 +33,12 @@ namespace Antennas
 
 Leds::Leds(TaskScheduler* scheduler) : scheduler(scheduler)
 {
-    *led_ref(LedColor::RED)    = LedState::OFF;
-    *led_ref(LedColor::YELLOW) = LedState::OFF;
-    *led_ref(LedColor::ORANGE) = LedState::OFF;
-    *led_ref(LedColor::GREEN)  = LedState::OFF;
+    for (size_t i = 0; i < led_states.size(); i++)
+    {
+        led_states[i]  = LedState::OFF;
+        led_mutexes[i] = make_unique<mutex>();
+        led_cvs[i]     = make_unique<condition_variable>();
+    }
 }
 
 bool Leds::start()
diff --git a/src/boards/Groundstation/Automated/Leds/Leds.h b/src/boards/Groundstation/Automated/Leds/Leds.h
index f1f2d358dc01115a7ebfd60e94978dbf97aa6b33..a2e1da63f4163835cc0e4c0c4c534ec7fda2669e 100644
--- a/src/boards/Groundstation/Automated/Leds/Leds.h
+++ b/src/boards/Groundstation/Automated/Leds/Leds.h
@@ -24,6 +24,7 @@
 
 #include <scheduler/TaskScheduler.h>
 
+#include <array>
 #include <condition_variable>
 #include <map>
 #include <mutex>
@@ -47,7 +48,7 @@ enum class LedColor : uint8_t
 class Leds : public Boardcore::Module
 {
 public:
-    Leds(Boardcore::TaskScheduler* scheduler);
+    explicit Leds(Boardcore::TaskScheduler* scheduler);
 
     /**
      * @brief Start the blinking LED thread
@@ -75,9 +76,9 @@ public:
     void endless_blink(LedColor color);
 
 protected:
-    enum class LedState
+    enum class LedState : uint8_t
     {
-        OFF,
+        OFF = 0,
         ON,
         BLINKING
     };
@@ -88,23 +89,23 @@ protected:
 
     LedState* led_ref(LedColor color)
     {
-        return &leds[static_cast<uint8_t>(color)];
+        return &led_states[static_cast<uint8_t>(color)];
     }
 
     std::mutex* mutex_ref(LedColor color)
     {
-        return &led_mutex[static_cast<uint8_t>(color)];
+        return led_mutexes[static_cast<uint8_t>(color)].get();
     }
 
     std::condition_variable* cv_ref(LedColor color)
     {
-        return &cv[static_cast<uint8_t>(color)];
+        return led_cvs[static_cast<uint8_t>(color)].get();
     }
 
     Boardcore::TaskScheduler* scheduler;
-    LedState leds[4];
-    std::mutex led_mutex[4];
-    std::condition_variable cv[4];
+    std::array<LedState, 4> led_states;
+    std::array<unique_ptr<std::mutex>, 4> led_mutexes;
+    std::array<unique_ptr<std::condition_variable>, 4> led_cvs;
 };
 
 }  // namespace Antennas
diff --git a/src/boards/Groundstation/Automated/SMController/SMController.h b/src/boards/Groundstation/Automated/SMController/SMController.h
index b7d1b6407baf528d7102aa78209d49b21aaf2946..5eb7dcd692d4a199cbd72e6d8e8a7a695fd66ce1 100644
--- a/src/boards/Groundstation/Automated/SMController/SMController.h
+++ b/src/boards/Groundstation/Automated/SMController/SMController.h
@@ -42,7 +42,7 @@ class SMController : public Boardcore::Module,
                      public Boardcore::HSM<SMController>
 {
 public:
-    SMController(Boardcore::TaskScheduler* scheduler);
+    explicit SMController(Boardcore::TaskScheduler* scheduler);
 
     // FSM States