diff --git a/Assets/Scenes/Level01.unity b/Assets/Scenes/Level01.unity
index 82e4ad564157b693eb366217c222bc347e49169c..f9013f32dcad197e5d1bcfbaf89027a1059bbd1e 100644
--- a/Assets/Scenes/Level01.unity
+++ b/Assets/Scenes/Level01.unity
@@ -11841,9 +11841,7 @@ Transform:
   m_Children:
   - {fileID: 14871712}
   - {fileID: 636207316}
-  - {fileID: 1656483646}
   - {fileID: 756133771}
-  - {fileID: 1994384353}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1212966710
@@ -13660,6 +13658,8 @@ Transform:
   - {fileID: 384557718}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+<<<<<<< HEAD
+=======
 --- !u!1 &1656483645
 GameObject:
   m_ObjectHideFlags: 0
@@ -13733,6 +13733,7 @@ MonoBehaviour:
   shopTimeRemaining: 0
   shopKeeper: {fileID: 0}
   timerCanvas: {fileID: 0}
+>>>>>>> 0d10b3347e008e73681d3671cd0f76ddacfec3bb
 --- !u!1 &1695883712
 GameObject:
   m_ObjectHideFlags: 0
@@ -16212,11 +16213,6 @@ MeshFilter:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1978917666}
   m_Mesh: {fileID: 4300002, guid: 9f185e9167e4f99489912e1b6d9899bf, type: 3}
---- !u!4 &1994384353 stripped
-Transform:
-  m_CorrespondingSourceObject: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-  m_PrefabInstance: {fileID: 8089176424800807016}
-  m_PrefabAsset: {fileID: 0}
 --- !u!1 &2025801928 stripped
 GameObject:
   m_CorrespondingSourceObject: {fileID: 2179698135647974157, guid: a6cf23af3ca4087408302fb3311a1fd3, type: 3}
@@ -16602,63 +16598,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2138422230}
   m_CullTransparentMesh: 1
---- !u!1001 &8089176424800807016
-PrefabInstance:
-  m_ObjectHideFlags: 0
-  serializedVersion: 2
-  m_Modification:
-    serializedVersion: 3
-    m_TransformParent: {fileID: 1165414997}
-    m_Modifications:
-    - target: {fileID: 2379307448264636869, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_Name
-      value: DataPersistenceManager
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalPosition.x
-      value: -1.5124696
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalPosition.y
-      value: 1.9276284
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalPosition.z
-      value: 0.27401495
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalRotation.w
-      value: 1
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalRotation.x
-      value: -0
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalRotation.y
-      value: -0
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalRotation.z
-      value: -0
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.z
-      value: 0
-      objectReference: {fileID: 0}
-    m_RemovedComponents: []
-    m_RemovedGameObjects: []
-    m_AddedGameObjects: []
-    m_AddedComponents: []
-  m_SourcePrefab: {fileID: 100100000, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
 --- !u!1660057539 &9223372036854775807
 SceneRoots:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity
index 09a7bb0cb2672ad5efd4df3ae877522a282946b0..69e0e245f3bf4b6485cbe8d143ae39805986481e 100644
--- a/Assets/Scenes/MainMenu.unity
+++ b/Assets/Scenes/MainMenu.unity
@@ -339,7 +339,7 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: OpenSettings
         m_Mode: 6
@@ -1160,6 +1160,9 @@ MonoBehaviour:
   rajaKilled: 0
   winQuest: 0
   fail: 0
+  isShopKeeper: 0
+  shopTimeRemaining: 0
+  shopKeeper: {fileID: 0}
 --- !u!4 &309830954
 Transform:
   m_ObjectHideFlags: 0
@@ -1333,7 +1336,7 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: QuitGame
         m_Mode: 1
@@ -1478,7 +1481,7 @@ MonoBehaviour:
           m_StringArgument: 
           m_BoolArgument: 0
         m_CallState: 2
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: OpenSettings
         m_Mode: 6
@@ -1744,7 +1747,7 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: OpenStats
         m_Mode: 6
@@ -4876,7 +4879,7 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 2052799352}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: PlayGame
         m_Mode: 1
@@ -5287,7 +5290,7 @@ MonoBehaviour:
           m_StringArgument: 
           m_BoolArgument: 0
         m_CallState: 2
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: OpenSettings
         m_Mode: 6
@@ -5420,9 +5423,9 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2052799349}
-        m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
-        m_MethodName: OnLoadGameClicked
+      - m_Target: {fileID: 2069597732}
+        m_TargetAssemblyTypeName: DataPersistenceManager, Assembly-CSharp
+        m_MethodName: LoadGame
         m_Mode: 1
         m_Arguments:
           m_ObjectArgument: {fileID: 0}
@@ -7251,9 +7254,9 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 2052799348}
-  - component: {fileID: 2052799349}
   - component: {fileID: 2052799350}
   - component: {fileID: 2052799351}
+  - component: {fileID: 2052799352}
   m_Layer: 5
   m_Name: MainMenu
   m_TagString: Untagged
@@ -7289,21 +7292,6 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: -700, y: -328}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &2052799349
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2052799347}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 33462a6e284b4a24aab6430fa47f8b32, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  settings: {fileID: 95415617}
-  stats: {fileID: 1261534167}
-  loadButton: {fileID: 1495964238}
 --- !u!114 &2052799350
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -7335,6 +7323,21 @@ MonoBehaviour:
   shotsText: {fileID: 2122165065}
   distanceText: {fileID: 994761032}
   timeText: {fileID: 5435174}
+--- !u!114 &2052799352
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2052799347}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 33462a6e284b4a24aab6430fa47f8b32, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  settings: {fileID: 95415617}
+  stats: {fileID: 1261534167}
+  loadButton: {fileID: 1495964238}
 --- !u!1 &2056420290
 GameObject:
   m_ObjectHideFlags: 0
@@ -7418,7 +7421,7 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2052799349}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
         m_MethodName: OpenStats
         m_Mode: 6
@@ -7468,6 +7471,17 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2056420290}
   m_CullTransparentMesh: 0
+--- !u!114 &2069597732 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 7310441132621849856, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3}
+  m_PrefabInstance: {fileID: 573993210}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ff080c65d846fce40916179a81d1a151, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &2103227365
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/DataUtils/FileDataHandler.cs b/Assets/Scripts/DataUtils/FileDataHandler.cs
index e4f323934edb75983eb43a3122c5e1162b631439..278d875a24ab986c847dc5571a85e2a085a55742 100644
--- a/Assets/Scripts/DataUtils/FileDataHandler.cs
+++ b/Assets/Scripts/DataUtils/FileDataHandler.cs
@@ -49,6 +49,22 @@ public class FileDataHandler
         return loadedData;
     }
 
+    public void Delete()
+    {
+        string fullPath = Path.Combine(dataDirPath, dataFileName);
+
+        if (File.Exists(fullPath))
+        {
+            File.Delete(fullPath);
+            Debug.Log("File deleted successfully.");
+        }
+        else
+        {
+            Debug.LogWarning("File not found.");
+        }
+
+    }
+
     public void Save(GameData data)
     {
         string fullPath = Path.Combine(dataDirPath, dataFileName);
diff --git a/Assets/Scripts/DataUtils/GameData.cs b/Assets/Scripts/DataUtils/GameData.cs
index 791d648a0edb9e286bd6da3543bb1fc4e1857844..77c02a723f0348e4000ce6959148efcf81ff30b6 100644
--- a/Assets/Scripts/DataUtils/GameData.cs
+++ b/Assets/Scripts/DataUtils/GameData.cs
@@ -33,8 +33,25 @@ public class GameData
         this.baseDamage = 40;
         this.currentPosition = new Vector3(0f, 0f, 0f);
         this.currentWeapon = 0;
-        this.currentScene = 4;
-        this.currentQuest = 1;
+        this.currentScene = 1;
+        this.currentQuest = 0;
+        this.shopKeeperTime = 120f;
+    }
+
+    public GameData(int currentScene)
+    {
+        this.score = 0;
+        this.coin = 0;
+        this.pets = new List<string>();
+        this.petsHealth = new List<double>();
+        this.playerName = string.Empty;
+        this.playerSpeed = 6;
+        this.playerHealth = 100;
+        this.baseDamage = 40;
+        this.currentPosition = new Vector3(0f, 0f, 0f);
+        this.currentWeapon = 0;
+        this.currentScene = currentScene;
+        this.currentQuest = 0;
         this.shopKeeperTime = 120f;
     }
 
diff --git a/Assets/Scripts/Helpers/SaveRadius.cs b/Assets/Scripts/Helpers/SaveRadius.cs
index 85078bf6fbdb0349032628d596a51eef15bb7741..f07a2f860268ec4e433404823f4a742896dafa75 100644
--- a/Assets/Scripts/Helpers/SaveRadius.cs
+++ b/Assets/Scripts/Helpers/SaveRadius.cs
@@ -21,6 +21,7 @@ public class SaveRadius : MonoBehaviour
         if (timer >= 1 && playerInRange && Input.GetKeyDown(KeyCode.Z))
         {
             timer = 0;
+            DataPersistenceManager.instance.SafeFromSafehouse();
             DataPersistenceManager.instance.SaveGame();
         }
 
diff --git a/Assets/Scripts/MainMenu/MainMenu.cs b/Assets/Scripts/MainMenu/MainMenu.cs
index 5e7f08515ffb64d1d46a771d8acb50b27cef3c97..4001072ac73fd2b12864ab056b63408efe2b9fc4 100644
--- a/Assets/Scripts/MainMenu/MainMenu.cs
+++ b/Assets/Scripts/MainMenu/MainMenu.cs
@@ -44,12 +44,13 @@ public class MainMenu : MonoBehaviour
     public void PlayGame()
     {
         Debug.Log("On New Game Clicked");
-        LevelManager.Instance.Next();
         DataPersistenceManager.instance.NewGame();
+        LevelManager.Instance.LoadScene();
     }
 
     public void QuitGame()
     {
+        DataPersistenceManager.instance.FileMechanism();
         Application.Quit();
     }
 
@@ -57,6 +58,7 @@ public class MainMenu : MonoBehaviour
     {
         Debug.Log("OnLoadGame clicked");
         DataPersistenceManager.instance.LoadGame();
+        DataPersistenceManager.instance.LoadGameClicked();
         LevelManager.Instance.LoadScene();
     }
 }
diff --git a/Assets/Scripts/Managers/DataPersistenceManager.cs b/Assets/Scripts/Managers/DataPersistenceManager.cs
index 0aca1a40b9d416e303e40158fb052b898868ddfb..46bf0d2337bda4abd0e034d5714595a17727282d 100644
--- a/Assets/Scripts/Managers/DataPersistenceManager.cs
+++ b/Assets/Scripts/Managers/DataPersistenceManager.cs
@@ -8,9 +8,14 @@ public class DataPersistenceManager : MonoBehaviour
     [Header("File Storage Config")]
     [SerializeField] private string fileName;
     private FileDataHandler dataHandler;
-    public static DataPersistenceManager instance {  get; private set; }
+    public static DataPersistenceManager instance { get; private set; }
     private GameData gameData;
     private List<IDataPersistence> dataPersistenceList;
+    private GameData loadedGameData;
+    private bool newGame = false;
+    private bool loadGame = false;
+    private bool saveSafeHouse = false;
+    private bool hasSaved = false;
 
     private void Awake()
     {
@@ -36,10 +41,43 @@ public class DataPersistenceManager : MonoBehaviour
 
     private void OnApplicationQuit()
     {
-        if (gameData.playerHealth > 0)
+        if (!hasSaved && !loadGame)
         {
-            SaveGame();
-            return;
+            this.dataHandler.Delete();
+        }
+        else if (loadGame)
+        {
+            if (!hasSaved)
+            {
+                this.dataHandler.Save(this.loadedGameData);
+            }
+        }
+    }
+
+    public void FileMechanism()
+    {
+        Debug.Log("File Mechanism Called");
+        if (!hasSaved && !loadGame)
+        {
+            this.dataHandler.Delete();
+            this.gameData = null;
+        }
+        else if (loadGame)
+        {
+            Debug.Log(hasSaved);
+            if (!hasSaved)
+            {
+                this.dataHandler.Save(this.loadedGameData);
+                this.gameData = this.loadedGameData;
+            }
+            else
+            {
+                this.gameData = this.dataHandler.Load();
+            }
+        }
+        else if (hasSaved)
+        {
+            this.gameData = this.dataHandler.Load();
         }
     }
 
@@ -57,24 +95,47 @@ public class DataPersistenceManager : MonoBehaviour
 
     public void OnSceneLoaded(Scene scene, LoadSceneMode mode)
     {
-        this.dataPersistenceList = FindAllDataPersistence();
-        LoadGame();
+        if (scene.name.Contains("MainMenu") || scene.name.Contains("Level"))
+        {
+            this.dataPersistenceList = FindAllDataPersistence();
+            LoadGame();
+        }
     }
 
     public void OnSceneUnloaded(Scene scene)
     {
-        SaveGame();
+        Debug.Log("OnSceneUnloaded called");
+        if (scene.name.Contains("03") || scene.name.Contains("04") || scene.name.Contains("05") || scene.name.Contains("06"))
+        {
+            SaveGame();
+        }
     }
 
     public void NewGame()
     {
         this.gameData = new GameData();
+        this.newGame = true;
+        this.loadGame = false;
+
+        foreach (IDataPersistence dataPersistence in dataPersistenceList)
+        {
+            dataPersistence.LoadData(gameData);
+        }
+    }
+
+    public void RetryGame(int scene)
+    {
+        this.gameData = new GameData(scene);
     }
 
     public void LoadGame()
     {
         // TODO - load saved data
-        this.gameData = dataHandler.Load();
+        if (!newGame)
+        {
+            this.gameData = dataHandler.Load();
+            this.loadedGameData = this.gameData;
+        }
 
         // if no data can be loaded, dont continue
         if (this.gameData == null || this.gameData.playerHealth <= 0)
@@ -84,9 +145,9 @@ public class DataPersistenceManager : MonoBehaviour
         }
         // TODO - push loaded data to all other scripts that need it
 
-        foreach (IDataPersistence dataPersistence in dataPersistenceList)
+        for (int i = dataPersistenceList.Count-1; i >= 0; i--)
         {
-            dataPersistence.LoadData(gameData);
+            dataPersistenceList[i].LoadData(gameData);
         }
 
         Debug.Log("Load Game called");
@@ -95,19 +156,54 @@ public class DataPersistenceManager : MonoBehaviour
     public void SaveGame()
     {
         // TODO - pass the data to other scripts
-        foreach (IDataPersistence dataPersistence in dataPersistenceList)
+        for (int i = dataPersistenceList.Count - 1; i >= 0; i--)
         {
-            dataPersistence.SaveData(ref gameData);
+            dataPersistenceList[i].SaveData(ref gameData);
         }
 
+        Debug.Log("SaveHouse bool: " + this.saveSafeHouse);
+
         // TODO - save data to a file
-        dataHandler.Save(gameData);
+        if (saveSafeHouse)
+        {
+            dataHandler.Save(gameData);
+            saveSafeHouse = false;
+            hasSaved = true;
+        }
 
         Debug.Log("Save Game called");
     }
 
+    public void SaveSceneGame()
+    {
+        // TODO - pass the data to other scripts
+        foreach (IDataPersistence dataPersistence in dataPersistenceList)
+        {
+            dataPersistence.SaveData(ref gameData);
+        }
+
+        Debug.Log("Save Scene Game called");
+    }
+
     public bool HasGameData()
     {
         return gameData != null;
     }
+
+    public void SafeFromSafehouse()
+    {
+        this.saveSafeHouse = true;
+    }
+
+    public void ResetSave()
+    {
+        this.saveSafeHouse = false;
+    }
+
+    public void LoadGameClicked()
+    {
+        this.loadGame = true;
+        this.newGame = false;
+        this.loadedGameData = gameData;
+    }
 }
diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs
index 8c7247f23bbaf8d9ca4a368450917838e5bf1ef1..1e75ecb69e213993b3bc9e466f62bc18222c50f1 100644
--- a/Assets/Scripts/Managers/GameOverManager.cs
+++ b/Assets/Scripts/Managers/GameOverManager.cs
@@ -38,11 +38,15 @@ namespace Nightmare
 
         public void ResetLevel()
         {
+            DataPersistenceManager.instance.RetryGame(1);
+            DataPersistenceManager.instance.ResetSave();
             LevelManager.Instance.ResetLevel();
         }
 
         public void ExitGame()
         {
+            DataPersistenceManager.instance.FileMechanism();
+            DataPersistenceManager.instance.ResetSave();
             LevelManager.Instance.Exit();
         }
 
diff --git a/Assets/Scripts/Managers/LevelManager.cs b/Assets/Scripts/Managers/LevelManager.cs
index 89b2b573186b48dbfb18c370b7e025a3825a86d6..a2652ead0df45a42da6aadad30b9a5f6a94cd8b9 100644
--- a/Assets/Scripts/Managers/LevelManager.cs
+++ b/Assets/Scripts/Managers/LevelManager.cs
@@ -22,9 +22,8 @@ namespace Nightmare
             "Cutscene08"
         };
 
-        private static LevelManager instance;
-        public int currentIndex = 0;
-        public int currentQuest = 0;
+        private int currentIndex = 0;
+        private int currentQuest = 0;
         private float announcementDuration = 5f;
         public TMPro.TextMeshProUGUI announcementText;
         public EnemyManager[] enemyManager;
@@ -43,46 +42,35 @@ namespace Nightmare
         public GameObject shopKeeper;
         public GameObject timerCanvas;
 
-        public static LevelManager Instance
-        {
-            get
-            {
-                if (instance == null)
-                {
-                    instance = FindObjectOfType<LevelManager>();
-                    if (instance == null)
-                    {
-                        GameObject managerObject = new GameObject("LevelManager");
-                        instance = managerObject.AddComponent<LevelManager>();
-                    }
-                }
-                return instance;
-            }
-        }
-
+        public static LevelManager Instance;
         private void Awake()
         {
-            if (instance == null)
-            {
-                instance = this;
-                DontDestroyOnLoad(gameObject);
-            }
-            else
+            if (Instance != null)
             {
-                Destroy(gameObject);
+                Debug.LogError("Found more than one LevelManager in the scene. Destroying the newest one.");
+                Destroy(this.gameObject);
+                return;
             }
+            
+            Instance = this;
+            DontDestroyOnLoad(this.gameObject);
         }
 
         public void LoadData(GameData data)
         {
             this.currentIndex = data.currentScene;
             this.currentQuest = data.currentQuest;
+            Debug.Log("Load data scene and quest " + this.currentIndex + " " + this.currentQuest);
         }
 
         public void SaveData(ref GameData data)
         {
             data.currentScene = this.currentIndex;
-            data.currentQuest = this.currentQuest;
+            if (this.currentQuest >= 1)
+            {
+                data.currentQuest = this.currentQuest-1;
+            }
+            Debug.Log("Save data scene and quest " + this.currentIndex + " " + this.currentQuest);
         }
 
         private void Update()
@@ -340,7 +328,7 @@ namespace Nightmare
                         }
                     }
 
-                    timeRemaining = 60f + announcementDuration;
+                    timeRemaining = 5f + announcementDuration;
                 }
                 else if (currentQuest == 2)
                 {
diff --git a/Assets/Scripts/Managers/PetManager.cs b/Assets/Scripts/Managers/PetManager.cs
index a01631375f57631fb4a809d7ba6233d8fefb4743..ba22f1123b8eb26573a3242f86c01c4e08278c84 100644
--- a/Assets/Scripts/Managers/PetManager.cs
+++ b/Assets/Scripts/Managers/PetManager.cs
@@ -13,19 +13,19 @@ public class PetManager : MonoBehaviour, IDataPersistence
         player = GameObject.FindGameObjectWithTag("Player");
     }
 
-    public void SpawnPet(string petTag, double petHealth)
+    public void SpawnPet(string petTag, double petHealth, Vector3 playerPosition)
     {
         GameObject pet = null;
         if (petTag == "PetHealer")
         {
-            pet = Instantiate(PetHealer, player.transform.position, player.transform.rotation);
+            pet = Instantiate(PetHealer, playerPosition, Quaternion.identity);
 
             PetHealth healthofPet = pet.GetComponent<PetHealth>();
             healthofPet.currentHealth = petHealth;
         }
         else if (petTag == "PetFighter")
         {
-            pet = Instantiate(PetFighter, player.transform.position, player.transform.rotation);
+            pet = Instantiate(PetFighter, playerPosition, Quaternion.identity);
 
             PetHealth healthofPet = pet.GetComponent<PetHealth>();
             healthofPet.currentHealth = petHealth;
@@ -34,14 +34,10 @@ public class PetManager : MonoBehaviour, IDataPersistence
 
     public void LoadData(GameData data)
     {
-        if (player == null)
-        {
-            player = GameObject.FindGameObjectWithTag("Player");
-        }
 
         for (int i = 0; i < data.pets.Count; i++)
         {
-            SpawnPet(data.pets[i], data.petsHealth[i]);
+            SpawnPet(data.pets[i], data.petsHealth[i], data.currentPosition);
         }
     }
 
@@ -50,6 +46,9 @@ public class PetManager : MonoBehaviour, IDataPersistence
         GameObject[] petHealers = GameObject.FindGameObjectsWithTag("PetHealer");
         GameObject[] petFighters = GameObject.FindGameObjectsWithTag("PetFighter");
 
+        data.pets = new List<string>();
+        data.petsHealth = new List<double>();
+
         foreach (GameObject petHealer in petHealers)
         {
             PetHealth goodPetHealth = petHealer.GetComponent<PetHealth>();