diff --git a/RWTHVRCluster.uplugin b/RWTHVRCluster.uplugin
index d5a51b05b2bf52b34d77c81db889a656220d5447..7382e211f65d9fb165bda0e468c8e54969dabbe6 100644
--- a/RWTHVRCluster.uplugin
+++ b/RWTHVRCluster.uplugin
@@ -22,7 +22,7 @@
 		{
 			"Name": "RWTHVRCluster",
 			"Type": "Runtime",
-			"LoadingPhase": "Default",
+			"LoadingPhase": "PostConfigInit",
 			"WhitelistPlatforms": [
 				"Win64",
 				"Linux"
diff --git a/Source/RWTHVRCluster/Private/RWTHVRCluster.cpp b/Source/RWTHVRCluster/Private/RWTHVRCluster.cpp
index 5632551f90a26458579d02705077b14faad5305c..104e2d0d73448945b5199d4b0b52d0eedea42753 100644
--- a/Source/RWTHVRCluster/Private/RWTHVRCluster.cpp
+++ b/Source/RWTHVRCluster/Private/RWTHVRCluster.cpp
@@ -1,8 +1,64 @@
 #include "RWTHVRCluster.h"
 
+
+#include "IVulkanDynamicRHI.h"
+
 #define LOCTEXT_NAMESPACE "FRWTHVRClusterModule"
 
-void FRWTHVRClusterModule::StartupModule() { ClusterConsole.Register(); }
+void FRWTHVRClusterModule::StartupModule()
+{
+	ClusterConsole.Register();
+
+	if (FApp::CanEverRender())
+	{
+#if PLATFORM_WINDOWS
+		TCHAR const* DynamicRHIModuleName = GetSelectedDynamicRHIModuleName(false);
+#elif PLATFORM_LINUX
+		TCHAR const* DynamicRHIModuleName = TEXT("VulkanRHI");
+#endif
+
+		if (FString("VulkanRHI") == FString(DynamicRHIModuleName))
+		{
+			TArray<ANSICHAR const*> const ExtensionsToAdd{VK_NV_PRESENT_BARRIER_EXTENSION_NAME};
+			TArray<ANSICHAR const*> const InstanceExtensionsToAdd{VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME};
+
+			IVulkanDynamicRHI::AddEnabledDeviceExtensionsAndLayers(ExtensionsToAdd, TArray<ANSICHAR const*>());
+			IVulkanDynamicRHI::AddEnabledInstanceExtensionsAndLayers({InstanceExtensionsToAdd}, TArray<ANSICHAR const*>());
+		}
+		/*
+		FCoreDelegates::OnPostEngineInit.AddLambda(
+			[]()
+			{
+				switch (GDynamicRHI->GetInterfaceType())
+				{
+				case ERHIInterfaceType::Vulkan:
+					FAVDevice::GetHardwareDevice()->SetContext<FVideoContextVulkan>(MakeShared<FVideoContextVulkan>(
+						GetIVulkanDynamicRHI()->RHIGetVkInstance(), GetIVulkanDynamicRHI()->RHIGetVkDevice(),
+						GetIVulkanDynamicRHI()->RHIGetVkPhysicalDevice(), [](char const* Name) -> PFN_vkVoidFunction
+						{ return (PFN_vkVoidFunction)GetIVulkanDynamicRHI()->RHIGetVkDeviceProcAddr(Name); }));
+
+					break;
+#if PLATFORM_WINDOWS
+				case ERHIInterfaceType::D3D11:
+					FAVDevice::GetHardwareDevice()->SetContext<FVideoContextD3D11>(
+						MakeShared<FVideoContextD3D11>(GetID3D11DynamicRHI()->RHIGetDevice()));
+
+					break;
+				case ERHIInterfaceType::D3D12:
+					FAVDevice::GetHardwareDevice()->SetContext<FVideoContextD3D12>(
+						MakeShared<FVideoContextD3D12>(GetID3D12DynamicRHI()->RHIGetDevice(0)));
+
+					break;
+#endif
+				default:
+					break;
+				}
+
+				FAVDevice::GetHardwareDevice()->SetContext<FVideoContextRHI>(MakeShared<FVideoContextRHI>());
+			});
+			*/
+	}
+}
 
 void FRWTHVRClusterModule::ShutdownModule() { ClusterConsole.Unregister(); }
 
diff --git a/Source/RWTHVRCluster/RWTHVRCluster.Build.cs b/Source/RWTHVRCluster/RWTHVRCluster.Build.cs
index 98f6200330450e0a35572838fe11bc02a88997e3..f27ad3ba52b067c4fd6cbed74462863175160015 100644
--- a/Source/RWTHVRCluster/RWTHVRCluster.Build.cs
+++ b/Source/RWTHVRCluster/RWTHVRCluster.Build.cs
@@ -25,12 +25,19 @@ public class RWTHVRCluster : ModuleRules
 				"UMG",
 				"Slate",
 				"SlateCore",
-				"LiveLink", 
+				"LiveLink",
 				"HeadMountedDisplay", // required for MotionControllerComp
-				"DisplayCluster"
+				"DisplayCluster",
+				"RenderCore"
 			}
 		);
 
+		PrivateDependencyModuleNames.AddRange(
+			new string[]
+			{
+				"VulkanRHI", "RHI", "Vulkan"
+			}
+		);
 		if (IsPluginEnabledForTarget("DTrackPlugin", base.Target))
 		{
 			PublicDependencyModuleNames.AddRange(
@@ -42,10 +49,6 @@ public class RWTHVRCluster : ModuleRules
 			);
 		}
 
-		PrivateDependencyModuleNames.AddRange(
-			new string[] { }
-		);
-
 		DynamicallyLoadedModuleNames.AddRange(
 			new string[] { }
 		);