diff --git a/Source/CAVEOverlay/Private/CAVEOverlayController.cpp b/Source/CAVEOverlay/Private/CAVEOverlayController.cpp
index ecff03b52984ab1d924b575599e5d90416c21419..d18b4b72166fe66d739e42740b0aa7eb790de8c1 100644
--- a/Source/CAVEOverlay/Private/CAVEOverlayController.cpp
+++ b/Source/CAVEOverlay/Private/CAVEOverlayController.cpp
@@ -21,8 +21,7 @@
 
 DEFINE_LOG_CATEGORY(LogCAVEOverlay);
 
-template <std::size_t S>
-bool ContainsFString(const std::array<FString, S>& Array, const FString& Entry)
+bool ContainsFString(const TArray<FString>& Array, const FString& Entry)
 {
 	for (FString Current_Entry : Array)
 	{
@@ -279,7 +278,7 @@ bool ACAVEOverlayController::PositionInDoorOpening(FVector Position)
 void ACAVEOverlayController::RefreshPawnComponents()
 {
 	Cave_Origin = Player_Pawn->GetTrackingOriginComponent();
-	Shutter_Glasses = Player_Pawn->GetShutterGlassesComponent();
+	Head = Player_Pawn->GetHeadComponent();
 }
 
 // Called every frame
@@ -289,7 +288,7 @@ void ACAVEOverlayController::Tick(float DeltaTime)
 
 	if (!bCAVE_Mode) return; // Not our business
 
-	if (!Cave_Origin || !Shutter_Glasses)
+	if (!Cave_Origin || !Head)
 	{
 		RefreshPawnComponents();
 	}
@@ -313,10 +312,10 @@ void ACAVEOverlayController::Tick(float DeltaTime)
 		}
 	}
 
-	if (!Shutter_Glasses) return; //Display Cluster not initialized
+	if (!Head) return; //Display Cluster not initialized
 
 	//Tape Logic
-	FVector Shutter_Position = Shutter_Glasses->GetRelativeTransform().GetLocation();
+	FVector Shutter_Position = Cave_Origin->GetComponentLocation() - Head->GetComponentLocation();
 	bool bOverlay_Visible = FMath::IsWithinInclusive(Shutter_Position.GetAbsMax(), Wall_Distance - Wall_Close_Distance, Wall_Distance);
 
 	if (bOverlay_Visible && !PositionInDoorOpening(Shutter_Position))
diff --git a/Source/CAVEOverlay/Public/CAVEOverlayController.h b/Source/CAVEOverlay/Public/CAVEOverlayController.h
index 73760b6a4c562522472332438ded6ec9a52585f6..0a335f0cb2b2114f9daaac48748f3f33930156bc 100644
--- a/Source/CAVEOverlay/Public/CAVEOverlayController.h
+++ b/Source/CAVEOverlay/Public/CAVEOverlayController.h
@@ -6,7 +6,6 @@
 #include "GameFramework/Actor.h"
 #include "DoorOverlayData.h"
 #include "Engine/Engine.h"
-#include <array>
 #include "Components/StaticMeshComponent.h"
 #include "Materials/Material.h"
 #include "Materials/MaterialInstanceDynamic.h"
@@ -39,9 +38,9 @@ private:
 	enum EScreen_Type { SCREEN_MASTER, SCREEN_NORMAL, SCREEN_DOOR_PARTIAL, SCREEN_DOOR };
 
 	EScreen_Type Screen_Type = SCREEN_NORMAL;
-	const std::array<FString, 4> Screens_Door = {"node_bul_left_eye", "node_bul_right_eye", "node_bll_left_eye", "node_bll_right_eye"};
-	const std::array<FString, 4> Screens_Door_Partial = {"node_bur_left_eye", "node_bur_right_eye", "node_blr_left_eye", "node_blr_right_eye"};
-	const std::array<FString, 5> Screens_FPS = {"node_rur_left_eye", "node_rur_right_eye", "node_lur_left_eye", "node_lur_right_eye", "node_main"};
+	const TArray<FString> Screens_Door = {"node_bul_left_eye", "node_bul_right_eye", "node_bll_left_eye", "node_bll_right_eye"};
+	const TArray<FString> Screens_Door_Partial = {"node_bur_left_eye", "node_bur_right_eye", "node_blr_left_eye", "node_blr_right_eye"};
+	const TArray<FString> Screens_FPS = {"node_rur_left_eye", "node_rur_right_eye", "node_lur_left_eye", "node_lur_right_eye", "node_main"};
 	const FString Screen_Main = "node_main";
 
 	//Door Mode
@@ -73,7 +72,7 @@ private:
 	void RefreshPawnComponents();
 	AVirtualRealityPawn* Player_Pawn;
 	USceneComponent* Cave_Origin;
-	USceneComponent* Shutter_Glasses;
+	USceneComponent* Head;
 
 	//Cluster Events
 	FOnClusterEventListener ClusterEventListenerDelegate;