diff --git a/UnityGoesBruh/Assets/Scripts/Door_2/MainDoorController.cs b/UnityGoesBruh/Assets/Scripts/Door_2/MainDoorController.cs
index 772ead58f8380494ed794f87b9fe0b57b68e481c..c1583d2e00c839b3073fd44ab87f372cb0e4719f 100644
--- a/UnityGoesBruh/Assets/Scripts/Door_2/MainDoorController.cs
+++ b/UnityGoesBruh/Assets/Scripts/Door_2/MainDoorController.cs
@@ -3,8 +3,9 @@ using System.Collections.Generic;
 using UnityEngine;
 using TMPro;
 using Assets.Scripts.Simon_Say;
+using Game.MinigameScript;
 
-public class MainDoorController : MonoBehaviour
+public class MainDoorController : MonoBehaviour, MiniGameObserver
 {
     [SerializeField]
     private GameObject _console;
@@ -22,6 +23,16 @@ public class MainDoorController : MonoBehaviour
         set => this._isLocked = value;
     }
 
+    public void OnWin(MiniGame miniGame)
+    {
+        OnKeypadCorrect();
+    }
+
+    public void OnLose(MiniGame miniGame)
+    {
+        
+    }
+
     // Start is called before the first frame update
     void Start()
     {
@@ -31,7 +42,7 @@ public class MainDoorController : MonoBehaviour
         }
         if (this._keypad != null)
         {
-            this._keypad.GetComponent<keypadController>().OnCorrect(OnKeypadCorrect);
+            this._keypad.GetComponent<Keypad>().AddObserver(this);
         }
 
         this._animator = this.GetComponent<Animator>();
diff --git a/UnityGoesBruh/Assets/Scripts/Game/Logic.cs b/UnityGoesBruh/Assets/Scripts/Game/Logic.cs
index 138a4083f3f807e3305fe204fab12969f2f79289..ad6d0f890e5337d7674b7b5f3606107465aff498 100644
--- a/UnityGoesBruh/Assets/Scripts/Game/Logic.cs
+++ b/UnityGoesBruh/Assets/Scripts/Game/Logic.cs
@@ -21,7 +21,9 @@ public class Logic : MonoBehaviour, MiniGameObserver
     {
         foreach (GameObject gameObject in _miniGames)
         {
-            gameObject.GetComponent<MiniGame>().AddObserver(this);
+            MiniGame miniGame = gameObject.GetComponent<MiniGame>();
+            miniGame.AddObserver(this);
+            miniGame.enabled = false;
         }
         ChooseRandomMiniGame();
     }
@@ -29,15 +31,16 @@ public class Logic : MonoBehaviour, MiniGameObserver
     //Choose a new random game on win
     public void OnWin(MiniGame miniGame)
     {
-        _curMiniGame.enabled = false;
-
-        ChooseRandomMiniGame();
+        if(_curMiniGame == miniGame){
+            _curMiniGame.enabled = false;
+            ChooseRandomMiniGame();
+        }
     }
 
     //Not implemented
     public void OnLose(MiniGame miniGame)
     {
-        _curMiniGame.enabled = false;
+        //_curMiniGame.enabled = false;
         //Quit Game / Lose Condition
     }