diff --git a/src/boards/MockupMain/PinHandler/PinHandler.cpp b/src/boards/MockupMain/PinHandler/PinHandler.cpp
index 67b4ed246baeb06ee183a608c4a44c5bee56f394..136187b65a88ab832eaeb4a88cead62f87b701c0 100644
--- a/src/boards/MockupMain/PinHandler/PinHandler.cpp
+++ b/src/boards/MockupMain/PinHandler/PinHandler.cpp
@@ -46,7 +46,7 @@ void PinHandler::onExpulsionPinTransition(PinTransition transition)
 
 bool PinHandler::start()
 {
-    running = PinObserver::getInstance().start();
+    running = true;
     return running;
 }
 
@@ -57,14 +57,15 @@ std::map<PinsList, PinData> PinHandler::getPinsData()
     std::map<PinsList, PinData> data;
 
     data[PinsList::NOSECONE_PIN] =
-        PinObserver::getInstance().getPinData(inputs::expulsion::getPin());
+        pinObserver.getPinData(inputs::expulsion::getPin());
 
     return data;
 }
 
-PinHandler::PinHandler() : running(false)
+PinHandler::PinHandler(TaskScheduler scheduler)
+    : running(false), pinObserver(scheduler)
 {
-    PinObserver::getInstance().registerPinCallback(
+    pinObserver.registerPinCallback(
         inputs::expulsion::getPin(),
         std::bind(&PinHandler::onExpulsionPinTransition, this, _1),
         NC_DETACH_PIN_THRESHOLD);
diff --git a/src/boards/MockupMain/PinHandler/PinHandler.h b/src/boards/MockupMain/PinHandler/PinHandler.h
index d40539e608b79c42b6d812a7cee445a12477bf64..51e680ca935aae752d22996f8f1db8ce73ea85fc 100644
--- a/src/boards/MockupMain/PinHandler/PinHandler.h
+++ b/src/boards/MockupMain/PinHandler/PinHandler.h
@@ -40,7 +40,7 @@ namespace MockupMain
 class PinHandler : public Boardcore::Module
 {
 public:
-    PinHandler();
+    PinHandler(TaskScheduler scheduler);
 
     bool start();
 
@@ -60,6 +60,8 @@ public:
 private:
     Boardcore::PrintLogger logger = Boardcore::Logging::getLogger("pinhandler");
 
+    Boardcore::PinObserver pinObserver;
+
     std::atomic<bool> running;
 };