diff --git a/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp b/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp
index 3cc59dc25facb9414c3e49ffd06dc87f11f5a3c8..418b350fa7ce3b798516a43195d75afcc189d45b 100644
--- a/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp
+++ b/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp
@@ -1,13 +1,16 @@
 #include "Utility/VirtualRealityUtilities.h"
 
-#include "Cluster/IDisplayClusterClusterManager.h"
-#include "Components/DisplayClusterCameraComponent.h"
-#include "Config/IDisplayClusterConfigManager.h"
-#include "DisplayClusterRootActor.h"
-#include "DisplayClusterConfigurationTypes.h"
+#if PLATFORM_SUPPORTS_NDISPLAY
+    #include "Cluster/IDisplayClusterClusterManager.h"
+    #include "Components/DisplayClusterCameraComponent.h"
+    #include "Config/IDisplayClusterConfigManager.h"
+    #include "DisplayClusterRootActor.h"
+    #include "DisplayClusterConfigurationTypes.h"
+    #include "Game/IDisplayClusterGameManager.h"
+    #include "IDisplayCluster.h"
+#endif
+
 #include "Engine/Engine.h"
-#include "Game/IDisplayClusterGameManager.h"
-#include "IDisplayCluster.h"
 #include "IXRTrackingSystem.h"
 
 bool UVirtualRealityUtilities::IsDesktopMode()
@@ -16,7 +19,11 @@ bool UVirtualRealityUtilities::IsDesktopMode()
 }
 bool UVirtualRealityUtilities::IsRoomMountedMode()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	return IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster;
+#else
+	return false;
+#endif
 }
 bool UVirtualRealityUtilities::IsHeadMountedMode()
 {
@@ -25,34 +32,47 @@ bool UVirtualRealityUtilities::IsHeadMountedMode()
 
 bool UVirtualRealityUtilities::IsCave()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	if(!IsRoomMountedMode()) return false;
 	
 	const UDisplayClusterConfigurationData* ClusterConfig = IDisplayCluster::Get().GetConfigMgr()->GetConfig();
 	return ClusterConfig->CustomParameters.Contains("Hardware_Platform")
 		&& ClusterConfig->CustomParameters.Find("Hardware_Platform")->Equals("aixcave", ESearchCase::IgnoreCase);
+#else
+	return false;
+#endif
 }
 
 bool UVirtualRealityUtilities::IsTdw()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	if(!IsRoomMountedMode()) return false;
 	
 	const UDisplayClusterConfigurationData* ClusterConfig = IDisplayCluster::Get().GetConfigMgr()->GetConfig();
 	return ClusterConfig->CustomParameters.Contains("Hardware_Platform")
 		&& ClusterConfig->CustomParameters.Find("Hardware_Platform")->Equals("TiledDisplayWall", ESearchCase::IgnoreCase);
+#else
+	return false;
+#endif
 }
 
 bool UVirtualRealityUtilities::IsRolv()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	if(!IsRoomMountedMode()) return false;
 	
 	const UDisplayClusterConfigurationData* ClusterConfig = IDisplayCluster::Get().GetConfigMgr()->GetConfig();
 	return ClusterConfig->CustomParameters.Contains("Hardware_Platform")
 		&& ClusterConfig->CustomParameters.Find("Hardware_Platform")->Equals("ROLV", ESearchCase::IgnoreCase);
+#else
+	return false;
+#endif
 }
 
 /* Return true on the Master in cluster mode and in a normal desktop session. Otherwise false */
 bool UVirtualRealityUtilities::IsMaster()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	if (!IDisplayCluster::IsAvailable()) 
 	{
 		return true;
@@ -63,6 +83,9 @@ bool UVirtualRealityUtilities::IsMaster()
 		return true; // if we are not in cluster mode, we are always the master
 	}
 	return Manager->IsMaster() || !Manager->IsSlave();
+#else
+    return true;
+#endif
 }
 
 bool UVirtualRealityUtilities::IsSlave()
@@ -72,24 +95,40 @@ bool UVirtualRealityUtilities::IsSlave()
 
 FString UVirtualRealityUtilities::GetNodeName()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	return IsRoomMountedMode() ? IDisplayCluster::Get().GetClusterMgr()->GetNodeId() : FString(TEXT("Localhost"));
+#else
+	return FString(TEXT("Localhost"));
+#endif
 }
 float UVirtualRealityUtilities::GetEyeDistance()
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	return IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetDefaultCamera()->GetInterpupillaryDistance();
+#else
+	return 0;
+#endif
 }
 
-EDisplayClusterEyeStereoOffset UVirtualRealityUtilities::GetNodeEyeType()
+EEyeStereoOffset UVirtualRealityUtilities::GetNodeEyeType()
 {
-	return IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetDefaultCamera()->GetStereoOffset();
+#if PLATFORM_SUPPORTS_NDISPLAY
+	return static_cast<EEyeStereoOffset>(IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetDefaultCamera()->GetStereoOffset());
+#else
+	return None;
+#endif
 }
 
-UDisplayClusterSceneComponent* UVirtualRealityUtilities::GetClusterComponent(const FString& Name)
+USceneComponent* UVirtualRealityUtilities::GetClusterComponent(const FString& Name)
 {
+#if PLATFORM_SUPPORTS_NDISPLAY
 	return IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetComponentById(Name);
+#else
+	return nullptr;
+#endif
 }
 
-UDisplayClusterSceneComponent* UVirtualRealityUtilities::GetNamedClusterComponent(const ENamedClusterComponent& Component)
+USceneComponent* UVirtualRealityUtilities::GetNamedClusterComponent(const ENamedClusterComponent& Component)
 {
 	switch(Component)
 	{
@@ -103,7 +142,7 @@ UDisplayClusterSceneComponent* UVirtualRealityUtilities::GetNamedClusterComponen
 	case ENamedClusterComponent::NCC_TDW_ORIGIN: return GetClusterComponent("tdw_origin_floor");
 	case ENamedClusterComponent::NCC_TDW_CENTER: return GetClusterComponent("tdw_center");
 	case ENamedClusterComponent::NCC_TRACKING_ORIGIN:
-		UDisplayClusterSceneComponent* Result;
+		USceneComponent* Result;
 		if((Result = GetClusterComponent("cave_origin"))) return Result;
 		if((Result = GetClusterComponent("rolv_origin"))) return Result;
 		if((Result = GetClusterComponent("tdw_origin_floor"))) return Result;
diff --git a/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h b/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h
index 07273f16d7e78710f18103abacccc5be96941b10..d96d066b0045f4909a1c17c44969455728601369 100644
--- a/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h
+++ b/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h
@@ -1,6 +1,5 @@
 #pragma once
 
-#include "Components/DisplayClusterCameraComponent.h"
 #include "CoreMinimal.h"
 #include "Kismet/BlueprintFunctionLibrary.h"
 #include "VirtualRealityUtilities.generated.h"
@@ -27,6 +26,14 @@ enum class ENamedClusterComponent : uint8
 	NCC_TRACKING_ORIGIN UMETA(DisplayName = "CAVE/ROLV/TDW Origin")
 };
 
+UENUM()
+enum EEyeStereoOffset
+{
+    None,
+	Left,
+	Right
+};
+
 UCLASS()
 class RWTHVRTOOLKIT_API UVirtualRealityUtilities : public UBlueprintFunctionLibrary
 {
@@ -46,9 +53,9 @@ public:
 	UFUNCTION(BlueprintPure, Category = "DisplayCluster") static FString GetNodeName();
 	UFUNCTION(BlueprintPure, Category = "DisplayCluster") static float GetEyeDistance();
 
-	UFUNCTION(BlueprintPure, Category = "DisplayCluster") static EDisplayClusterEyeStereoOffset GetNodeEyeType();
+	UFUNCTION(BlueprintPure, Category = "DisplayCluster") static EEyeStereoOffset GetNodeEyeType();
 
 	//Get Compenent of Display Cluster by it's name, which is specified in the nDisplay config
-	UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static UDisplayClusterSceneComponent* GetClusterComponent(const FString& Name);
-	UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static UDisplayClusterSceneComponent* GetNamedClusterComponent(const ENamedClusterComponent& Component);
+	UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static USceneComponent* GetClusterComponent(const FString& Name);
+	UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static USceneComponent* GetNamedClusterComponent(const ENamedClusterComponent& Component);
 };
diff --git a/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs b/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs
index c2703457413cc20fb359f66262c73e04294b4b29..dae5948601267b19b931b4276a4f5ae923fa7627 100644
--- a/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs
+++ b/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs
@@ -2,57 +2,50 @@ using UnrealBuildTool;
 
 public class RWTHVRToolkit : ModuleRules
 {
-  public RWTHVRToolkit(ReadOnlyTargetRules Target) : base(Target)
-  {
-    PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
-
-    PublicIncludePaths.AddRange(
-      new string[]
-      {
-
-      }
-      );
-
-
-    PrivateIncludePaths.AddRange(
-      new string[]
-      {
-
-      }
-      );
-
-
-    PublicDependencyModuleNames.AddRange(
-      new string[]
-      {
-        "Core",
-        "CoreUObject",
-        "DisplayCluster",
-        "Engine",
-        "HeadMountedDisplay",
-        "InputCore",
-        "UMG",
-        "Slate",
-        "SlateCore",
-        "DeveloperSettings",
-        "Http"
-      }
-      );
-
-
-    PrivateDependencyModuleNames.AddRange(
-      new string[]
-      {
-
-      }
-      );
-
-
-    DynamicallyLoadedModuleNames.AddRange(
-      new string[]
-      {
-
-      }
-      );
-  }
+	public RWTHVRToolkit(ReadOnlyTargetRules Target) : base(Target)
+	{
+		PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
+		
+		PublicIncludePaths.AddRange(
+			new string[]{}
+		);
+
+		PrivateIncludePaths.AddRange(
+			new string[]{}
+		);
+
+		PublicDependencyModuleNames.AddRange(
+			new string[]
+			{
+			"Core",
+			"CoreUObject",
+			"Engine",
+			"HeadMountedDisplay",
+			"InputCore",
+			"UMG",
+			"Slate",
+			"SlateCore",
+			"DeveloperSettings",
+			"Http"
+			}
+		);
+
+		PrivateDependencyModuleNames.AddRange(
+			new string[]{}
+		);
+
+		DynamicallyLoadedModuleNames.AddRange(
+			new string[]{}
+		);
+		
+		if(Target.Platform == UnrealTargetPlatform.Win64 || Target.Platform == UnrealTargetPlatform.Linux)
+		{
+			//PublicDependencyModuleNames.Add("DisplayCluster");
+			PublicDefinitions.Add("PLATFORM_SUPPORTS_NDISPLAY=0");
+		}
+		else
+		{
+			PublicDefinitions.Add("PLATFORM_SUPPORTS_NDISPLAY=0");
+		}
+	}
 }
diff --git a/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs b/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs
index f2b52dc9f12da22f9ae1408f9a80139fd9fb654a..a1e2b6c35cb009d4cd98f0050d317e5d9941879e 100644
--- a/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs
+++ b/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs
@@ -11,7 +11,6 @@ public class RWTHVRToolkitEditor : ModuleRules
             { 
                 "Core",
 			    "CoreUObject",
-			    "DisplayCluster",
 				"Engine",
 				"UnrealEd",
 				"ComponentVisualizers",