diff --git a/src/collision/ColStore.cpp b/src/collision/ColStore.cpp
index 4317655a..f1e695fe 100644
--- a/src/collision/ColStore.cpp
+++ b/src/collision/ColStore.cpp
@@ -12,6 +12,7 @@
 #include "Physical.h"
 #include "ColStore.h"
 #include "VarConsole.h"
+#include "Pools.h"
 
 CPool<ColDef,ColDef> *CColStore::ms_pColPool;
 #ifndef MASTER
@@ -184,7 +185,18 @@ CColStore::LoadCollision(const CVector2D &pos)
 			wantThisOne = true;
 		}else{
 			for (int j = 0; j < MAX_CLEANUP; j++) {
-				CPhysical* pEntity = CTheScripts::MissionCleanup.DoesThisEntityWaitForCollision(j);
+				CPhysical* pEntity = nil;
+				cleanup_entity_struct* pCleanup = &CTheScripts::MissionCleanUp.m_sEntities[i];
+				if (pCleanup->type == CLEANUP_CAR) {
+					pEntity = CPools::GetVehiclePool()->GetAt(pCleanup->id);
+					if (!pEntity || pEntity->GetStatus() == STATUS_WRECKED)
+						continue;
+				}
+				else if (pCleanup->type == CLEANUP_CHAR) {
+					pEntity = CPools::GetPedPool()->GetAt(pCleanup->id);
+					if (!pEntity || ((CPed*)pEntity)->DyingOrDead())
+						continue;
+				}
 				if (pEntity && !pEntity->bDontLoadCollision && !pEntity->bIsFrozen) {
 					if (GetBoundingBox(i).IsPointInside(pEntity->GetPosition(), -80.0f))
 						wantThisOne = true;
diff --git a/src/control/Garages.h b/src/control/Garages.h
index 46ae1542..3d12d4a2 100644
--- a/src/control/Garages.h
+++ b/src/control/Garages.h
@@ -93,6 +93,7 @@ VALIDATE_SIZE(CStoredCar, 0x28);
 
 class CGarage
 {
+public:
 	uint8 m_eGarageType;
 	uint8 m_eGarageState;
 	uint8 m_nMaxStoredCars;
@@ -189,9 +190,6 @@ class CGarage
 
 	int32 FindMaxNumStoredCarsForGarage() { return Min(NUM_GARAGE_STORED_CARS, m_nMaxStoredCars); }
 
-	friend class CGarages;
-	friend class cAudioManager;
-	friend class CCamera;
 };
 
 class CGarages
@@ -199,6 +197,7 @@ class CGarages
 	enum {
 		MESSAGE_LENGTH = 8,
 	};
+public:
 	static int32 BankVansCollected;
 	static bool BombsAreFree;
 	static bool RespraysAreFree;
@@ -218,7 +217,6 @@ class CGarages
 	static CStoredCar aCarsInSafeHouses[TOTAL_HIDEOUT_GARAGES][NUM_GARAGE_STORED_CARS];
 	static bool bCamShouldBeOutisde;
 
-public:
 	static void Init(void);
 #ifndef PS2
 	static void Shutdown(void);
@@ -259,7 +257,6 @@ public:
 	static void SetFreeResprays(bool bValue) { RespraysAreFree = bValue; }
 	static void SetMaxNumStoredCarsForGarage(int16 garage, uint8 num) { aGarages[garage].m_nMaxStoredCars = num; }
 
-private:
 	static bool IsCarSprayable(CVehicle*);
 	static float FindDoorHeightForMI(int32);
 	static void CloseHideOutGaragesBeforeSave(void);
@@ -296,7 +293,4 @@ private:
 	}
 	static bool IsThisGarageTypeSafehouse(uint8 type) { return FindSafeHouseIndexForGarageType(type) >= 0; }
 
-	friend class cAudioManager;
-	friend class CReplay;
-	friend class CGarage;
 };
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index 4fdd6fd0..79ef408e 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -85,7 +85,7 @@ uint16 CTheScripts::NumScriptDebugLines;
 uint16 CTheScripts::NumberOfIntroRectanglesThisFrame;
 uint16 CTheScripts::NumberOfIntroTextLinesThisFrame;
 uint8 CTheScripts::UseTextCommands;
-CMissionCleanup CTheScripts::MissionCleanup;
+CMissionCleanup CTheScripts::MissionCleanUp;
 CUpsideDownCarCheck CTheScripts::UpsideDownCars;
 CStuckCarCheck CTheScripts::StuckCars;
 uint16 CTheScripts::CommandsExecuted;
@@ -1711,23 +1711,38 @@ void CMissionCleanup::RemoveEntityFromList(int32 id, uint8 type)
 			switch (m_sEntities[i].type) {
 			case CLEANUP_CAR:
 			{
-				CVehicle* v = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
-				if (v)
-					PossiblyWakeThisEntity(v);
+				CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
+				if (pVehicle) {
+					if (pVehicle->bIsStaticWaitingForCollision) {
+						pVehicle->bIsStaticWaitingForCollision = false;
+						if (!pVehicle->GetIsStatic())
+							pVehicle->AddToMovingList();
+					}
+				}
 				break;
 			}
 			case CLEANUP_CHAR:
 			{
-				CPed* p = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
-				if (p)
-					PossiblyWakeThisEntity(p);
+				CPed* pPed = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
+				if (pPed) {
+					if (pPed->bIsStaticWaitingForCollision) {
+						pPed->bIsStaticWaitingForCollision = false;
+						if (!pPed->GetIsStatic())
+							pPed->AddToMovingList();
+					}
+				}
 				break;
 			}
 			case CLEANUP_OBJECT:
 			{
-				CObject* o = CPools::GetObjectPool()->GetAt(m_sEntities[i].id);
-				if (o)
-					PossiblyWakeThisEntity(o);
+				CObject* pObject = CPools::GetObjectPool()->GetAt(m_sEntities[i].id);
+				if (pObject) {
+					if (pObject->bIsStaticWaitingForCollision) {
+						pObject->bIsStaticWaitingForCollision = false;
+						if (!pObject->GetIsStatic())
+							pObject->AddToMovingList();
+					}
+				}
 				break;
 			}
 			default:
@@ -1746,23 +1761,44 @@ void CMissionCleanup::CheckIfCollisionHasLoadedForMissionObjects()
 		switch (m_sEntities[i].type) {
 		case CLEANUP_CAR:
 		{
-			CVehicle* v = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
-			if (v)
-				PossiblyWakeThisEntity(v, true);
+			CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
+			if (pVehicle) {
+				if (pVehicle->bIsStaticWaitingForCollision) {
+					if (CColStore::HasCollisionLoaded(pVehicle->GetPosition())) {
+						pVehicle->bIsStaticWaitingForCollision = false;
+							if (!pVehicle->GetIsStatic())
+								pVehicle->AddToMovingList();
+					}
+				}
+			}
 			break;
 		}
 		case CLEANUP_CHAR:
 		{
-			CPed* p = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
-			if (p)
-				PossiblyWakeThisEntity(p, true);
+			CPed* pPed = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
+			if (pPed) {
+				if (pPed->bIsStaticWaitingForCollision) {
+					if (CColStore::HasCollisionLoaded(pPed->GetPosition())) {
+						pPed->bIsStaticWaitingForCollision = false;
+						if (!pPed->GetIsStatic())
+							pPed->AddToMovingList();
+					}
+				}
+			}
 			break;
 		}
 		case CLEANUP_OBJECT:
 		{
-			CObject* o = CPools::GetObjectPool()->GetAt(m_sEntities[i].id);
-			if (o)
-				PossiblyWakeThisEntity(o, true);
+			CObject* pObject = CPools::GetObjectPool()->GetAt(m_sEntities[i].id);
+			if (pObject) {
+				if (pObject->bIsStaticWaitingForCollision) {
+					if (CColStore::HasCollisionLoaded(pObject->GetPosition())) {
+						pObject->bIsStaticWaitingForCollision = false;
+						if (!pObject->GetIsStatic())
+							pObject->AddToMovingList();
+					}
+				}
+			}
 			break;
 		}
 		default:
@@ -1771,21 +1807,6 @@ void CMissionCleanup::CheckIfCollisionHasLoadedForMissionObjects()
 	}
 }
 
-CPhysical* CMissionCleanup::DoesThisEntityWaitForCollision(int i)
-{
-	if (m_sEntities[i].type == CLEANUP_CAR) {
-		CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(m_sEntities[i].id);
-		if (pVehicle && pVehicle->GetStatus() != STATUS_WRECKED)
-			return pVehicle;
-	}
-	else if (m_sEntities[i].type == CLEANUP_CHAR) {
-		CPed* pPed = CPools::GetPedPool()->GetAt(m_sEntities[i].id);
-		if (pPed && !pPed->DyingOrDead())
-			return pPed;
-	}
-	return nil;
-}
-
 void CMissionCleanup::Process()
 {
 	CPopulation::m_AllRandomPedsThisType = -1;
@@ -1878,10 +1899,16 @@ void CUpsideDownCarCheck::Init()
 
 bool CUpsideDownCarCheck::IsCarUpsideDown(int32 id)
 {
-	CVehicle* v = CPools::GetVehiclePool()->GetAt(id);
-	return v->GetUp().z <= -0.97f &&
-		v->GetMoveSpeed().Magnitude() < 0.01f &&
-		v->GetTurnSpeed().Magnitude() < 0.02f;
+	CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(id);
+	return IsCarUpsideDown(pVehicle);
+}
+
+bool CUpsideDownCarCheck::IsCarUpsideDown(CVehicle* pVehicle)
+{
+	assert(pVehicle);
+	return pVehicle->GetUp().z <= UPSIDEDOWN_UP_THRESHOLD &&
+		pVehicle->GetMoveSpeed().Magnitude() < UPSIDEDOWN_MOVE_SPEED_THRESHOLD &&
+		pVehicle->GetTurnSpeed().Magnitude() < UPSIDEDOWN_TURN_SPEED_THRESHOLD;
 }
 
 void CUpsideDownCarCheck::UpdateTimers()
@@ -1904,7 +1931,7 @@ void CUpsideDownCarCheck::UpdateTimers()
 bool CUpsideDownCarCheck::AreAnyCarsUpsideDown()
 {
 	for (int i = 0; i < MAX_UPSIDEDOWN_CAR_CHECKS; i++){
-		if (m_sCars[i].m_nVehicleIndex >= 0 && m_sCars[i].m_nUpsideDownTimer > 1000)
+		if (m_sCars[i].m_nVehicleIndex >= 0 && m_sCars[i].m_nUpsideDownTimer > UPSIDEDOWN_TIMER_THRESHOLD)
 			return true;
 	}
 	return false;
@@ -1915,8 +1942,10 @@ void CUpsideDownCarCheck::AddCarToCheck(int32 id)
 	uint16 index = 0;
 	while (index < MAX_UPSIDEDOWN_CAR_CHECKS && m_sCars[index].m_nVehicleIndex >= 0)
 		index++;
+#ifdef FIX_BUGS
 	if (index >= MAX_UPSIDEDOWN_CAR_CHECKS)
 		return;
+#endif
 	m_sCars[index].m_nVehicleIndex = id;
 	m_sCars[index].m_nUpsideDownTimer = 0;
 }
@@ -1935,7 +1964,7 @@ bool CUpsideDownCarCheck::HasCarBeenUpsideDownForAWhile(int32 id)
 {
 	for (int i = 0; i < MAX_UPSIDEDOWN_CAR_CHECKS; i++){
 		if (m_sCars[i].m_nVehicleIndex == id)
-			return m_sCars[i].m_nUpsideDownTimer > 1000;
+			return m_sCars[i].m_nUpsideDownTimer > UPSIDEDOWN_TIMER_THRESHOLD;
 	}
 	return false;
 }
@@ -1985,7 +2014,10 @@ void CStuckCarCheck::AddCarToCheck(int32 id, float radius, uint32 time)
 	int index = 0;
 	while (index < MAX_STUCK_CAR_CHECKS && m_sCars[index].m_nVehicleIndex >= 0)
 		index++;
-	/* Would be nice to return if index >= MAX_STUCK_CAR_CHECKS... */
+#ifdef FIX_BUGS
+	if (index >= MAX_STUCK_CAR_CHECKS)
+		return;
+#endif
 	m_sCars[index].m_nVehicleIndex = id;
 	m_sCars[index].m_vecPos = pv->GetPosition();
 	m_sCars[index].m_nLastCheck = CTimer::GetTimeInMilliseconds();
@@ -2217,7 +2249,7 @@ void CTheScripts::Init()
 		ScriptsArray[i].Init();
 		ScriptsArray[i].AddScriptToList(&pIdleScripts);
 	}
-	MissionCleanup.Init();
+	MissionCleanUp.Init();
 	UpsideDownCars.Init();
 	StuckCars.Init();
 	CFileMgr::SetDir("data");
@@ -2345,7 +2377,7 @@ void CTheScripts::Process()
 	float timeStep = CTimer::GetTimeStepInMilliseconds();
 	UpsideDownCars.UpdateTimers();
 	StuckCars.Process();
-	MissionCleanup.CheckIfCollisionHasLoadedForMissionObjects();
+	MissionCleanUp.CheckIfCollisionHasLoadedForMissionObjects();
 	DrawScriptSpheres();
 	if (FailCurrentMission)
 		--FailCurrentMission;
@@ -3669,7 +3701,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
 		ScriptParams[0] = CPools::GetPedPool()->GetIndex(ped);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_DELETE_CHAR:
@@ -3678,7 +3710,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
 		CPed* ped = CPools::GetPedPool()->GetAt(ScriptParams[0]);
 		CTheScripts::RemoveThisPed(ped);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_CHAR_WANDER_DIR:
@@ -3899,7 +3931,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
 		ScriptParams[0] = handle;
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(handle, CLEANUP_CAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
 		return 0;
 	}
 	case COMMAND_DELETE_CAR:
@@ -3912,7 +3944,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
 			delete car;
 		}
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
 		return 0;
 	}
 	case COMMAND_CAR_GOTO_COORDINATES:
@@ -4227,7 +4259,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 	{
 		if (!m_bIsMissionScript)
 			return 0;
-		CTheScripts::MissionCleanup.Process();
+		CTheScripts::MissionCleanUp.Process();
 		return 0;
 	}
 	case COMMAND_STORE_CAR_CHAR_IS_IN:
@@ -4250,7 +4282,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 					pOld->bIsLocked = false;
 					CCarCtrl::NumRandomCars++;
 					CCarCtrl::NumMissionCars--;
-					CTheScripts::MissionCleanup.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
+					CTheScripts::MissionCleanUp.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
 				}
 			}
 
@@ -4261,14 +4293,14 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 				CCarCtrl::NumMissionCars++;
 				CCarCtrl::NumRandomCars--;
 				CTheScripts::StoreVehicleWasRandom = true;
-				CTheScripts::MissionCleanup.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
 				break;
 			case PARKED_VEHICLE:
 				pCurrent->VehicleCreatedBy = MISSION_VEHICLE;
 				CCarCtrl::NumMissionCars++;
 				CCarCtrl::NumParkedCars--;
 				CTheScripts::StoreVehicleWasRandom = true;
-				CTheScripts::MissionCleanup.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
 				break;
 			case MISSION_VEHICLE:
 			case PERMANENT_VEHICLE:
@@ -4301,7 +4333,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 					pOld->bIsLocked = false;
 					CCarCtrl::NumRandomCars++;
 					CCarCtrl::NumMissionCars--;
-					CTheScripts::MissionCleanup.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
+					CTheScripts::MissionCleanUp.RemoveEntityFromList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
 				}
 			}
 
@@ -4312,14 +4344,14 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 				CCarCtrl::NumMissionCars++;
 				CCarCtrl::NumRandomCars--;
 				CTheScripts::StoreVehicleWasRandom = true;
-				CTheScripts::MissionCleanup.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
 				break;
 			case PARKED_VEHICLE:
 				pCurrent->VehicleCreatedBy = MISSION_VEHICLE;
 				CCarCtrl::NumMissionCars++;
 				CCarCtrl::NumParkedCars--;
 				CTheScripts::StoreVehicleWasRandom = true;
-				CTheScripts::MissionCleanup.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(CTheScripts::StoreVehicleIndex, CLEANUP_CAR);
 				break;
 			case MISSION_VEHICLE:
 			case PERMANENT_VEHICLE:
@@ -4468,7 +4500,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 		ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pObj);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
 		return 0;
 	}
 	case COMMAND_DELETE_OBJECT:
@@ -4481,7 +4513,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 			delete pObj;
 		}
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
 		return 0;
 	}
 	case COMMAND_ADD_SCORE:
@@ -4697,7 +4729,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 		ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_WARP_PLAYER_FROM_CAR_TO_COORD:
@@ -4747,81 +4779,6 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
 	return -1;
 }
 
-
-void CRunningScript::Save(uint8*& buf)
-{
-#ifdef COMPATIBLE_SAVES
-	SkipSaveBuf(buf, 8);
-	for (int i = 0; i < 8; i++)
-		WriteSaveBuf<char>(buf, m_abScriptName[i]);
-	WriteSaveBuf<uint32>(buf, m_nIp);
-#ifdef CHECK_STRUCT_SIZES
-	static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6");
-#endif
-	for (int i = 0; i < MAX_STACK_DEPTH; i++)
-		WriteSaveBuf<uint32>(buf, m_anStack[i]);
-	WriteSaveBuf<uint16>(buf, m_nStackPointer);
-	SkipSaveBuf(buf, 2);
-#ifdef CHECK_STRUCT_SIZES
-	static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18");
-#endif
-	for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
-		WriteSaveBuf<int32>(buf, m_anLocalVariables[i]);
-	WriteSaveBuf<bool>(buf, m_bIsActive);
-	WriteSaveBuf<bool>(buf, m_bCondResult);
-	WriteSaveBuf<bool>(buf, m_bIsMissionScript);
-	WriteSaveBuf<bool>(buf, m_bSkipWakeTime);
-	WriteSaveBuf<uint32>(buf, m_nWakeTime);
-	WriteSaveBuf<uint16>(buf, m_nAndOrState);
-	WriteSaveBuf<bool>(buf, m_bNotFlag);
-	WriteSaveBuf<bool>(buf, m_bDeatharrestEnabled);
-	WriteSaveBuf<bool>(buf, m_bDeatharrestExecuted);
-	WriteSaveBuf<bool>(buf, m_bMissionFlag);
-	SkipSaveBuf(buf, 2);
-#else
-	WriteSaveBuf(buf, *this);
-#endif
-}
-
-void CRunningScript::Load(uint8*& buf)
-{
-#ifdef COMPATIBLE_SAVES
-	SkipSaveBuf(buf, 8);
-	for (int i = 0; i < 8; i++)
-		m_abScriptName[i] = ReadSaveBuf<char>(buf);
-	m_nIp = ReadSaveBuf<uint32>(buf);
-#ifdef CHECK_STRUCT_SIZES
-	static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6");
-#endif
-	for (int i = 0; i < MAX_STACK_DEPTH; i++)
-		m_anStack[i] = ReadSaveBuf<uint32>(buf);
-	m_nStackPointer = ReadSaveBuf<uint16>(buf);
-	SkipSaveBuf(buf, 2);
-#ifdef CHECK_STRUCT_SIZES
-	static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18");
-#endif
-	for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
-		m_anLocalVariables[i] = ReadSaveBuf<int32>(buf);
-	m_bIsActive = ReadSaveBuf<bool>(buf);
-	m_bCondResult = ReadSaveBuf<bool>(buf);
-	m_bIsMissionScript = ReadSaveBuf<bool>(buf);
-	m_bSkipWakeTime = ReadSaveBuf<bool>(buf);
-	m_nWakeTime = ReadSaveBuf<uint32>(buf);
-	m_nAndOrState = ReadSaveBuf<uint16>(buf);
-	m_bNotFlag = ReadSaveBuf<bool>(buf);
-	m_bDeatharrestEnabled = ReadSaveBuf<bool>(buf);
-	m_bDeatharrestExecuted = ReadSaveBuf<bool>(buf);
-	m_bMissionFlag = ReadSaveBuf<bool>(buf);
-	SkipSaveBuf(buf, 2);
-#else
-	CRunningScript* n = next;
-	CRunningScript* p = prev;
-	*this = ReadSaveBuf<CRunningScript>(buf);
-	next = n;
-	prev = p;
-#endif
-}
-
 #ifdef MISSION_REPLAY
 
 bool CRunningScript::CanAllowMissionReplay()
@@ -4856,7 +4813,7 @@ void RetryMission(int type, int unk)
 	else if (type == 2) {
 		doingMissionRetry = false;
 		AllowMissionReplay = 6;
-		CTheScripts::MissionCleanup.Process();
+		CTheScripts::MissionCleanUp.Process();
 	}
 }
 
diff --git a/src/control/Script.h b/src/control/Script.h
index ad8ccf74..aafc681c 100644
--- a/src/control/Script.h
+++ b/src/control/Script.h
@@ -21,26 +21,31 @@ extern int32 ScriptParams[32];
 void FlushLog();
 #define script_assert(_Expression) FlushLog(); assert(_Expression);
 
-#define PICKUP_PLACEMENT_OFFSET 0.5f
-#define PED_FIND_Z_OFFSET 5.0f
-#define COP_PED_FIND_Z_OFFSET 10.0f
+#define PICKUP_PLACEMENT_OFFSET (0.5f)
+#define PED_FIND_Z_OFFSET (5.0f)
+#define COP_PED_FIND_Z_OFFSET (10.0f)
 
-#define SPHERE_MARKER_R 252
-#define SPHERE_MARKER_G 138
-#define SPHERE_MARKER_B 242
-#define SPHERE_MARKER_A 228
+#define UPSIDEDOWN_UP_THRESHOLD (-0.97f)
+#define UPSIDEDOWN_MOVE_SPEED_THRESHOLD (0.01f)
+#define UPSIDEDOWN_TURN_SPEED_THRESHOLD (0.02f)
+#define UPSIDEDOWN_TIMER_THRESHOLD (1000)
+
+#define SPHERE_MARKER_R (252)
+#define SPHERE_MARKER_G (138)
+#define SPHERE_MARKER_B (242)
+#define SPHERE_MARKER_A (228)
 #define SPHERE_MARKER_PULSE_PERIOD 2048
 #define SPHERE_MARKER_PULSE_FRACTION 0.1f
 
 #ifdef USE_PRECISE_MEASUREMENT_CONVERTION
-#define METERS_IN_FOOT 0.3048f
-#define FEET_IN_METER 3.28084f
+#define METERS_IN_FOOT (0.3048f)
+#define FEET_IN_METER (3.28084f)
 #else
-#define METERS_IN_FOOT 0.3f
-#define FEET_IN_METER 3.33f
+#define METERS_IN_FOOT (0.3f)
+#define FEET_IN_METER (3.33f)
 #endif
 
-#define KEY_LENGTH_IN_SCRIPT 8
+#define KEY_LENGTH_IN_SCRIPT (8)
 
 //#define GTA_SCRIPT_COLLECTIVE
 
@@ -96,7 +101,7 @@ struct intro_text_line
 		m_bBackground = false;
 		m_bBackgroundOnly = false;
 		m_fWrapX = 182.0f;
-		m_fCenterSize = 640.0f;
+		m_fCenterSize = DEFAULT_SCREEN_WIDTH;
 		m_sBackgroundColor = CRGBA(128, 128, 128, 128);
 		m_bTextProportional = true;
 		m_bTextBeforeFade = false;
@@ -149,10 +154,10 @@ enum {
 
 class CMissionCleanup
 {
+public:
 	cleanup_entity_struct m_sEntities[MAX_CLEANUP];
 	uint8 m_nCount;
 
-public:
 	CMissionCleanup();
 
 	void Init();
@@ -161,10 +166,9 @@ public:
 	void RemoveEntityFromList(int32, uint8);
 	void Process();
 	void CheckIfCollisionHasLoadedForMissionObjects();
-	CPhysical* DoesThisEntityWaitForCollision(int i);
 };
 
-struct CUpsideDownCarCheckEntry
+struct upsidedown_car_data
 {
 	int32 m_nVehicleIndex;
 	uint32 m_nUpsideDownTimer;
@@ -172,11 +176,12 @@ struct CUpsideDownCarCheckEntry
 
 class CUpsideDownCarCheck
 {
-	CUpsideDownCarCheckEntry m_sCars[MAX_UPSIDEDOWN_CAR_CHECKS];
+	upsidedown_car_data m_sCars[MAX_UPSIDEDOWN_CAR_CHECKS];
 
 public:
 	void Init();
 	bool IsCarUpsideDown(int32);
+	bool IsCarUpsideDown(CVehicle*);
 	void UpdateTimers();
 	bool AreAnyCarsUpsideDown();
 	void AddCarToCheck(int32);
@@ -194,7 +199,7 @@ struct stuck_car_data
 	bool m_bStuck;
 
 	stuck_car_data() { }
-	inline void Reset();
+	void Reset();
 };
 
 class CStuckCarCheck
@@ -273,6 +278,7 @@ enum {
 
 class CTheScripts
 {
+public:
 	static uint8 ScriptSpace[SIZE_SCRIPT_SPACE];
 	static CRunningScript ScriptsArray[MAX_NUM_SCRIPTS];
 	static intro_text_line IntroTextLines[MAX_NUM_INTRO_TEXT_LINES];
@@ -286,7 +292,7 @@ class CTheScripts
 	static CStoredLine aStoredLines[MAX_NUM_STORED_LINES];
 	static bool DbgFlag;
 	static uint32 OnAMissionFlag;
-	static CMissionCleanup MissionCleanup;
+	static CMissionCleanup MissionCleanUp;
 	static CStuckCarCheck StuckCars;
 	static CUpsideDownCarCheck UpsideDownCars;
 	static int32 StoreVehicleIndex;
@@ -319,11 +325,10 @@ class CTheScripts
 	static int16 CardStack[CARDS_IN_STACK];
 	static int16 CardStackPosition;
 #endif
-public:
 	static bool bPlayerIsInTheStatium;
 	static uint8 RiotIntensity;
 	static bool bPlayerHasMetDebbieHarry;
-public:
+
 	static void Init();
 	static void Process();
 
@@ -377,8 +382,6 @@ public:
 		return Read4BytesFromScript(&tmp);
 	}
 
-private:
-
 	static CRunningScript* StartNewScript(uint32);
 
 	static void CleanUpThisVehicle(CVehicle*);
@@ -436,18 +439,11 @@ public:
 	static void SetObjectiveForAllPedsInCollective(int, eObjective);
 #endif
 
-	friend class CRunningScript;
-	friend class CHud;
-	friend void CMissionCleanup::Process();
-	friend class CColStore;
-#ifdef FIX_BUGS
-	friend void RetryMission(int, int);
-#endif
 };
 
 
 enum {
-	MAX_STACK_DEPTH = 6, // 4 PS2
+	MAX_STACK_DEPTH = 6,
 	NUM_LOCAL_VARS = 16,
 	NUM_TIMERS = 2
 };
@@ -474,6 +470,7 @@ class CRunningScript
 		ORS_8
 	};
 
+public:
 	CRunningScript* next;
 	CRunningScript* prev;
 	char m_abScriptName[8];
@@ -512,7 +509,6 @@ public:
 
 	static const uint32 nSaveStructSize;
 
-private:
 	void CollectParameters(uint32*, int16);
 	int32 CollectNextParameterWithoutIncreasingPC(uint32);
 	int32* GetPointerToScriptVariable(uint32*, int16);
@@ -580,7 +576,6 @@ private:
 	
 	static bool ThisIsAValidRandomCop(int32 mi, bool cop, bool swat, bool fbi, bool army, bool miami);
 
-	friend class CTheScripts;
 };
 
 #ifdef USE_DEBUG_SCRIPT_LOADER
diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp
index 8f56745c..a94bf907 100644
--- a/src/control/Script2.cpp
+++ b/src/control/Script2.cpp
@@ -1048,7 +1048,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
 		CTheScripts::CleanUpThisPed(pPed);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_MARK_CAR_AS_NO_LONGER_NEEDED:
@@ -1057,7 +1057,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
 		CTheScripts::CleanUpThisVehicle(pVehicle);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
 		return 0;
 	}
 	case COMMAND_MARK_OBJECT_AS_NO_LONGER_NEEDED:
@@ -1066,7 +1066,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
 		CTheScripts::CleanUpThisObject(pObject);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
 		return 0;
 	}
 	case COMMAND_DONT_REMOVE_CHAR:
@@ -1074,7 +1074,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		CollectParameters(&m_nIp, 1);
 		CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
 		script_assert(pPed);
-		CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+		CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_DONT_REMOVE_CAR:
@@ -1082,7 +1082,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		CollectParameters(&m_nIp, 1);
 		CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
 		script_assert(pVehicle);
-		CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
+		CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CAR);
 		return 0;
 	}
 	case COMMAND_DONT_REMOVE_OBJECT:
@@ -1090,7 +1090,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		CollectParameters(&m_nIp, 1);
 		CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
 		script_assert(pObject);
-		CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
+		CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_OBJECT);
 		return 0;
 	}
 	case COMMAND_CREATE_CHAR_AS_PASSENGER:
@@ -1157,7 +1157,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command)
 		ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_SET_CHAR_OBJ_KILL_CHAR_ON_FOOT:
diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp
index b4c2bb7c..7476d8de 100644
--- a/src/control/Script3.cpp
+++ b/src/control/Script3.cpp
@@ -325,11 +325,11 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
 		CollectParameters(&m_nIp, 1);
 		UpdateCompareFlag(CGarages::HasCarBeenDroppedOffYet(ScriptParams[0]));
 		return 0;
+/*
 	case COMMAND_SET_FREE_BOMBS:
 		CollectParameters(&m_nIp, 1);
 		CGarages::SetFreeBombs(ScriptParams[0] != 0);
 		return 0;
-#ifdef GTA_PS2
 	case COMMAND_SET_POWERPOINT:
 	{
 		CollectParameters(&m_nIp, 7);
@@ -363,8 +363,6 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
 
 		return 0;
 	}
-#endif // GTA_PS2
-	/*
 	case COMMAND_SET_ALL_TAXI_LIGHTS:
 		CollectParameters(&m_nIp, 1);
 		CAutomobile::SetAllTaxiLights(ScriptParams[0] != 0);
@@ -1279,7 +1277,7 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
 		ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pObj);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
 		return 0;
 	}
 	/*
@@ -1834,7 +1832,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
 			pPed->bRespondsToThreats = false;
 			++CPopulation::ms_nTotalMissionPeds;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(ped_handle, CLEANUP_CHAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
 		}
 		ScriptParams[0] = ped_handle;
 		StoreParameters(&m_nIp, 1);
@@ -1889,7 +1887,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
 			pPed->bRespondsToThreats = false;
 			++CPopulation::ms_nTotalMissionPeds;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(ped_handle, CLEANUP_CHAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
 		}
 		ScriptParams[0] = ped_handle;
 		StoreParameters(&m_nIp, 1);
diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp
index d350bafd..2177afa4 100644
--- a/src/control/Script4.cpp
+++ b/src/control/Script4.cpp
@@ -155,7 +155,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
 			++CCarCtrl::NumMissionCars;
 			--CCarCtrl::NumRandomCars;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(handle, CLEANUP_CAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
 		}
 		ScriptParams[0] = handle;
 		StoreParameters(&m_nIp, 1);
@@ -188,7 +188,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
 			++CCarCtrl::NumMissionCars;
 			--CCarCtrl::NumRandomCars;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(handle, CLEANUP_CAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
 		}
 		ScriptParams[0] = handle;
 		StoreParameters(&m_nIp, 1);
@@ -609,7 +609,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
 			}
 		}
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.RemoveEntityFromList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_SET_CHAR_STAY_IN_SAME_PLACE:
@@ -1056,7 +1056,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
 		ScriptParams[0] = CPools::GetPedPool()->GetIndex(ped);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR:
diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp
index ab3c5b7f..822a70a8 100644
--- a/src/control/Script5.cpp
+++ b/src/control/Script5.cpp
@@ -2251,6 +2251,80 @@ VALIDATESAVEBUF(size)
 
 #undef SCRIPT_DATA_SIZE
 
+void CRunningScript::Save(uint8*& buf)
+{
+#ifdef COMPATIBLE_SAVES
+	SkipSaveBuf(buf, 8);
+	for (int i = 0; i < 8; i++)
+		WriteSaveBuf<char>(buf, m_abScriptName[i]);
+	WriteSaveBuf<uint32>(buf, m_nIp);
+#ifdef CHECK_STRUCT_SIZES
+	static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6");
+#endif
+	for (int i = 0; i < MAX_STACK_DEPTH; i++)
+		WriteSaveBuf<uint32>(buf, m_anStack[i]);
+	WriteSaveBuf<uint16>(buf, m_nStackPointer);
+	SkipSaveBuf(buf, 2);
+#ifdef CHECK_STRUCT_SIZES
+	static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18");
+#endif
+	for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
+		WriteSaveBuf<int32>(buf, m_anLocalVariables[i]);
+	WriteSaveBuf<bool>(buf, m_bIsActive);
+	WriteSaveBuf<bool>(buf, m_bCondResult);
+	WriteSaveBuf<bool>(buf, m_bIsMissionScript);
+	WriteSaveBuf<bool>(buf, m_bSkipWakeTime);
+	WriteSaveBuf<uint32>(buf, m_nWakeTime);
+	WriteSaveBuf<uint16>(buf, m_nAndOrState);
+	WriteSaveBuf<bool>(buf, m_bNotFlag);
+	WriteSaveBuf<bool>(buf, m_bDeatharrestEnabled);
+	WriteSaveBuf<bool>(buf, m_bDeatharrestExecuted);
+	WriteSaveBuf<bool>(buf, m_bMissionFlag);
+	SkipSaveBuf(buf, 2);
+#else
+	WriteSaveBuf(buf, *this);
+#endif
+}
+
+void CRunningScript::Load(uint8*& buf)
+{
+#ifdef COMPATIBLE_SAVES
+	SkipSaveBuf(buf, 8);
+	for (int i = 0; i < 8; i++)
+		m_abScriptName[i] = ReadSaveBuf<char>(buf);
+	m_nIp = ReadSaveBuf<uint32>(buf);
+#ifdef CHECK_STRUCT_SIZES
+	static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6");
+#endif
+	for (int i = 0; i < MAX_STACK_DEPTH; i++)
+		m_anStack[i] = ReadSaveBuf<uint32>(buf);
+	m_nStackPointer = ReadSaveBuf<uint16>(buf);
+	SkipSaveBuf(buf, 2);
+#ifdef CHECK_STRUCT_SIZES
+	static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18");
+#endif
+	for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++)
+		m_anLocalVariables[i] = ReadSaveBuf<int32>(buf);
+	m_bIsActive = ReadSaveBuf<bool>(buf);
+	m_bCondResult = ReadSaveBuf<bool>(buf);
+	m_bIsMissionScript = ReadSaveBuf<bool>(buf);
+	m_bSkipWakeTime = ReadSaveBuf<bool>(buf);
+	m_nWakeTime = ReadSaveBuf<uint32>(buf);
+	m_nAndOrState = ReadSaveBuf<uint16>(buf);
+	m_bNotFlag = ReadSaveBuf<bool>(buf);
+	m_bDeatharrestEnabled = ReadSaveBuf<bool>(buf);
+	m_bDeatharrestExecuted = ReadSaveBuf<bool>(buf);
+	m_bMissionFlag = ReadSaveBuf<bool>(buf);
+	SkipSaveBuf(buf, 2);
+#else
+	CRunningScript* n = next;
+	CRunningScript* p = prev;
+	*this = ReadSaveBuf<CRunningScript>(buf);
+	next = n;
+	prev = p;
+#endif
+}
+
 void CTheScripts::ClearSpaceForMissionEntity(const CVector& pos, CEntity* pEntity)
 {
 	static CColPoint aTempColPoints[MAX_COLLISION_POINTS];
diff --git a/src/control/Script6.cpp b/src/control/Script6.cpp
index b9ec31ee..76780941 100644
--- a/src/control/Script6.cpp
+++ b/src/control/Script6.cpp
@@ -703,7 +703,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
 		ScriptParams[0] = CPools::GetVehiclePool()->GetIndex(pVehicle);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CAR);
 		return 0;
 	}
 	case COMMAND_START_BOAT_FOAM_ANIMATION:
@@ -1272,7 +1272,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
 			pPed->bRespondsToThreats = false;
 			++CPopulation::ms_nTotalMissionPeds;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(ped_handle, CLEANUP_CHAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
 		}
 		ScriptParams[0] = ped_handle;
 		StoreParameters(&m_nIp, 1);
@@ -1320,7 +1320,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
 			pPed->bRespondsToThreats = false;
 			++CPopulation::ms_nTotalMissionPeds;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(ped_handle, CLEANUP_CHAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
 		}
 		ScriptParams[0] = ped_handle;
 		StoreParameters(&m_nIp, 1);
diff --git a/src/control/Script7.cpp b/src/control/Script7.cpp
index 8d13bbae..1eaa6cd0 100644
--- a/src/control/Script7.cpp
+++ b/src/control/Script7.cpp
@@ -1201,7 +1201,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
 		ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_CREATE_RANDOM_CHAR_AS_PASSENGER:
@@ -1231,7 +1231,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
 		ScriptParams[0] = CPools::GetPedPool()->GetIndex(pPed);
 		StoreParameters(&m_nIp, 1);
 		if (m_bIsMissionScript)
-			CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
+			CTheScripts::MissionCleanUp.AddEntityToList(ScriptParams[0], CLEANUP_CHAR);
 		return 0;
 	}
 	case COMMAND_SET_CHAR_IGNORE_THREATS_BEHIND_OBJECTS:
diff --git a/src/control/Script8.cpp b/src/control/Script8.cpp
index a75692a0..0416d464 100644
--- a/src/control/Script8.cpp
+++ b/src/control/Script8.cpp
@@ -283,7 +283,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
 			pPed->bRespondsToThreats = false;
 			++CPopulation::ms_nTotalMissionPeds;
 			if (m_bIsMissionScript)
-				CTheScripts::MissionCleanup.AddEntityToList(ped_handle, CLEANUP_CHAR);
+				CTheScripts::MissionCleanUp.AddEntityToList(ped_handle, CLEANUP_CHAR);
 		}
 		ScriptParams[0] = ped_handle;
 		StoreParameters(&m_nIp, 1);
diff --git a/src/core/config.h b/src/core/config.h
index 139feddf..a06ed1be 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -338,6 +338,11 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
 #define USE_BASIC_SCRIPT_DEBUG_OUTPUT
 #endif
 
+#ifdef MASTER
+#undef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
+#undef USE_BASIC_SCRIPT_DEBUG_OUTPUT
+#endif
+
 // Replay
 //#define DONT_FIX_REPLAY_BUGS // keeps various bugs in CReplay, some of which are fairly cool!
 //#define USE_BETA_REPLAY_MODE // adds another replay mode, a few seconds slomo (caution: buggy!)