diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..f1833f7100bd31e63f12963088d0029bfb6c46dc
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+*.uasset filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitmodules b/.gitmodules
index 242fdcce6f5f92f8fb5392d0af2bb108a9142b1c..6f7d96c39b0e7ffded091bfdb51860e15648beb1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,3 +2,23 @@
 	path = setup
 	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/unreal-project-setup-script.git
 	branch = master
+[submodule "Plugins/unrealplugins"]
+	path = Plugins/unrealplugins
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/unrealplugins.git
+	branch = master
+[submodule "Plugins/ndisplayextensions"]
+	path = Plugins/ndisplayextensions
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/ndisplayextensions.git
+	branch = develop
+[submodule "Plugins/NDisplayLaunchButton"]
+	path = Plugins/NDisplayLaunchButton
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/NDisplayLaunchButton.git
+	branch = develop
+[submodule "Plugins/universallogging"]
+	path = Plugins/universallogging
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/universallogging.git
+	branch = develop
+[submodule "Plugins/widgetinteraction"]
+	path = Plugins/widgetinteraction
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/widgetinteraction.git
+	branch = develop
diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini
index f08de40d578660892389297159b4edb860e85fae..41e213055aa13c01a4de3f9827c2301d8fe09199 100644
--- a/Config/DefaultEngine.ini
+++ b/Config/DefaultEngine.ini
@@ -13,8 +13,10 @@ GlobalDefaultGameMode=/Script/DisplayClusterExtensions.VirtualRealityGameMode
 GameEngine=/Script/DisplayCluster.DisplayClusterGameEngine
 UnrealEdEngine=/Script/DisplayClusterEditor.DisplayClusterEditorEngine
 
-+ActiveGameNameRedirects=(OldGameName="TP_nDisplayBP",NewGameName="/Script/RwthVrTemplate")
-+ActiveGameNameRedirects=(OldGameName="/Script/TP_nDisplayBP",NewGameName="/Script/RwthVrTemplate")
++ActiveGameNameRedirects=(OldGameName="RwthVrTemplate",NewGameName="/Script/TiledDisplayVideo")
++ActiveGameNameRedirects=(OldGameName="/Script/RwthVrTemplate",NewGameName="/Script/TiledDisplayVideo")
++ActiveGameNameRedirects=(OldGameName="TP_nDisplayBP",NewGameName="/Script/TiledDisplayVideo")
++ActiveGameNameRedirects=(OldGameName="/Script/TP_nDisplayBP",NewGameName="/Script/TiledDisplayVideo")
 
 [/Script/DisplayClusterEditor.DisplayClusterEditorSettings]
 bEnabled=True
@@ -97,3 +99,8 @@ PhysXTreeRebuildRate=10
 DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPNumSubdivs=2)
 
 
+
+[/Script/HardwareTargeting.HardwareTargetingSettings]
+TargetedHardwareClass=Desktop
+DefaultGraphicsPerformance=Maximum
+
diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini
index 8da834f97a22d68dc85912506cf72ad5d6020a27..a45ce109ad9c9e75e222ade55b647376f076e261 100644
--- a/Config/DefaultGame.ini
+++ b/Config/DefaultGame.ini
@@ -1,4 +1,4 @@
 [/Script/EngineSettings.GeneralProjectSettings]
-ProjectID=6F40C2084FB7D1EAFCAEF3B2C978D28C
-ProjectName=RwthVrTemplate
+ProjectID=CD7313C2485C820D49F6C58387142DAA
+ProjectName=TiledDisplayVideo
 bUseBorderlessWindow=True
diff --git a/Config/TemplateDefs.ini b/Config/TemplateDefs.ini
deleted file mode 100644
index 240c7a992b5d6157583a66446bba50c0ca7959e1..0000000000000000000000000000000000000000
--- a/Config/TemplateDefs.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[/Script/GameProjectGeneration.TemplateProjectDefs]
-LocalizedDisplayNames=(Language="en",Text="RWTH VR")
-LocalizedDescriptions=(Language="en",Text="Template catering to the common use cases at RWTH VR. Contains nDisplayExtensions, AixCAVE config files, launch scripts and more.")
-
-ClassTypes=Character, GameMode, HUD, Actor
-AssetTypes=Animation Sequence, Animation Montage, Sound Wave, Skeletal Mesh, Animation Blueprint, Skeleton, Static Mesh, Texture.
-
-FoldersToIgnore=Binaries
-FoldersToIgnore=Build
-FoldersToIgnore=Intermediate
-FoldersToIgnore=Saved
-FoldersToIgnore=Media
-
-FilesToIgnore="%TEMPLATENAME%.uproject"
-FilesToIgnore="%TEMPLATENAME%.png"
-FilesToIgnore="Config/TemplateDefs.ini"
-FilesToIgnore="Config/config.ini"
-FilesToIgnore="%TEMPLATENAME%.opensdf"
-FilesToIgnore="%TEMPLATENAME%.sdf"
-FilesToIgnore="%TEMPLATENAME%.v11.suo"
-FilesToIgnore="%TEMPLATENAME%.v12.suo"
-FilesToIgnore="%TEMPLATENAME%.sln"
-FilesToIgnore="Manifest.json"
-FilesToIgnore="contents.txt"
-FilesToIgnore="README.md"
-
-FolderRenames=(From="Source/%TEMPLATENAME%",To="Source/%PROJECTNAME%")
-FolderRenames=(From="Source/%TEMPLATENAME%Editor",To="Source/%PROJECTNAME%Editor")
-
-FilenameReplacements=(Extensions=("cpp","h","ini","cs"),From="%TEMPLATENAME_UPPERCASE%",To="%PROJECTNAME_UPPERCASE%",bCaseSensitive=true)
-FilenameReplacements=(Extensions=("cpp","h","ini","cs"),From="%TEMPLATENAME_LOWERCASE%",To="%PROJECTNAME_LOWERCASE%",bCaseSensitive=true)
-FilenameReplacements=(Extensions=("cpp","h","ini","cs"),From="%TEMPLATENAME%",To="%PROJECTNAME%",bCaseSensitive=false)
-
-ReplacementsInFiles=(Extensions=("cpp","h","ini","cs"),From="%TEMPLATENAME_UPPERCASE%",To="%PROJECTNAME_UPPERCASE%",bCaseSensitive=true)
-ReplacementsInFiles=(Extensions=("cpp","h","ini","cs"),From="%TEMPLATENAME_LOWERCASE%",To="%PROJECTNAME_LOWERCASE%",bCaseSensitive=true)
-ReplacementsInFiles=(Extensions=("cpp","h","ini","cs"),From="%TEMPLATENAME%",To="%PROJECTNAME%",bCaseSensitive=false)
diff --git a/Plugins/CaveOverlay b/Plugins/CaveOverlay
new file mode 160000
index 0000000000000000000000000000000000000000..7293e5848a693f20439dc9151f1fefa5459128c3
--- /dev/null
+++ b/Plugins/CaveOverlay
@@ -0,0 +1 @@
+Subproject commit 7293e5848a693f20439dc9151f1fefa5459128c3
diff --git a/Plugins/NDisplayLaunchButton b/Plugins/NDisplayLaunchButton
new file mode 160000
index 0000000000000000000000000000000000000000..761f3f104457d0962dd2485edae834fecf2d925e
--- /dev/null
+++ b/Plugins/NDisplayLaunchButton
@@ -0,0 +1 @@
+Subproject commit 761f3f104457d0962dd2485edae834fecf2d925e
diff --git a/Plugins/nDisplayExtensions b/Plugins/nDisplayExtensions
new file mode 160000
index 0000000000000000000000000000000000000000..834c741d439ad3ec65018b215de51ca60377fda0
--- /dev/null
+++ b/Plugins/nDisplayExtensions
@@ -0,0 +1 @@
+Subproject commit 834c741d439ad3ec65018b215de51ca60377fda0
diff --git a/Plugins/universallogging b/Plugins/universallogging
new file mode 160000
index 0000000000000000000000000000000000000000..d43a0f2a88242a7ff3d98a6b7c2a540b56d3e853
--- /dev/null
+++ b/Plugins/universallogging
@@ -0,0 +1 @@
+Subproject commit d43a0f2a88242a7ff3d98a6b7c2a540b56d3e853
diff --git a/Plugins/unrealplugins b/Plugins/unrealplugins
new file mode 160000
index 0000000000000000000000000000000000000000..9a387c8b440c2ee2e7b85b9310ab5195dc3c7f19
--- /dev/null
+++ b/Plugins/unrealplugins
@@ -0,0 +1 @@
+Subproject commit 9a387c8b440c2ee2e7b85b9310ab5195dc3c7f19
diff --git a/Plugins/widgetinteraction b/Plugins/widgetinteraction
new file mode 160000
index 0000000000000000000000000000000000000000..c5c7820e7c2f992149b74944377c7669f6cf2f99
--- /dev/null
+++ b/Plugins/widgetinteraction
@@ -0,0 +1 @@
+Subproject commit c5c7820e7c2f992149b74944377c7669f6cf2f99
diff --git a/README.md b/README.md
deleted file mode 100644
index df0117fa650b907121e17188e24ffffc01beb433..0000000000000000000000000000000000000000
--- a/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# UnrealProjectTemplate
-Unreal Engine project template catering to the common use cases at RWTH VR. Contains nDisplayExtensions, AixCAVE config files, launch scripts and more.
-
-## Getting Started
-
-### Add the template
-`git clone -b master --recurse-submodules https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/unrealprojecttemplate.git` to your local `UnrealEngine/Templates` directory. If you are using Unreal version 4.21 you need to change the `master` to `deprecated/4-21`. If you know what you are doing and want the latest features use the `develop` branch instead of the `master` branches.
-
-### Create a new project
-When creating a new Project using Unreal you can find the template under `New Project -> C++ -> RWTH-VR`. After you created the project, open the project folder in the terminal (git-bash on windows) and run the `setup.sh`. This will remove the git remote of the template and optionally lets you add a new remote. This will allow you to call `update.sh` in the future to merge important changes made in the template back into your project. For more details about updating your project can be found in the wiki. 
-
-## Pitfalls
-Downloading the project directly from GitHub/GitLab will not work since it will not include the necessary submodules. Clone recursively instead.
-
-## FAQ
-Visit the project's wiki under https://devhub.vr.rwth-aachen.de/VR-Group/unrealprojecttemplate/wikis/home for more information.
\ No newline at end of file
diff --git a/RwthVrTemplate.png b/RwthVrTemplate.png
deleted file mode 100644
index ea40b3fd616f3f14ea10d11463460a8cbf16d602..0000000000000000000000000000000000000000
Binary files a/RwthVrTemplate.png and /dev/null differ
diff --git a/Saved/AutoScreenshot.png b/Saved/AutoScreenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..469c554d8a336e509a777648bdae7832c81e1956
Binary files /dev/null and b/Saved/AutoScreenshot.png differ
diff --git a/Source/RwthVrTemplate.Target.cs b/Source/RwthVrTemplate.Target.cs
deleted file mode 100644
index 7b0f96d93d759b892287330218d306584b9338f4..0000000000000000000000000000000000000000
--- a/Source/RwthVrTemplate.Target.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// Fill out your copyright notice in the Description page of Project Settings.
-
-using UnrealBuildTool;
-using System.Collections.Generic;
-
-public class RwthVrTemplateTarget : TargetRules
-{
-	public RwthVrTemplateTarget(TargetInfo Target) : base(Target)
-	{
-		Type = TargetType.Game;
-
-		ExtraModuleNames.AddRange( new string[] { "RwthVrTemplate" } );
-	}
-}
diff --git a/Source/RwthVrTemplate/RwthVrTemplate.cpp b/Source/RwthVrTemplate/RwthVrTemplate.cpp
deleted file mode 100644
index c36c1f64b36dbe08e18664a9d6dce22e12108f78..0000000000000000000000000000000000000000
--- a/Source/RwthVrTemplate/RwthVrTemplate.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#include "RwthVrTemplate.h"
-#include "Modules/ModuleManager.h"
-
-IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, RwthVrTemplate, "RwthVrTemplate" );
diff --git a/Source/RwthVrTemplateEditor.Target.cs b/Source/RwthVrTemplateEditor.Target.cs
deleted file mode 100644
index 8528bcb8886c56f907f3eadacd0da6b569b82298..0000000000000000000000000000000000000000
--- a/Source/RwthVrTemplateEditor.Target.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// Fill out your copyright notice in the Description page of Project Settings.
-
-using UnrealBuildTool;
-using System.Collections.Generic;
-
-public class RwthVrTemplateEditorTarget : TargetRules
-{
-	public RwthVrTemplateEditorTarget(TargetInfo Target) : base(Target)
-	{
-		Type = TargetType.Editor;
-
-		ExtraModuleNames.AddRange( new string[] { "RwthVrTemplate" } );
-	}
-}
diff --git a/Source/TiledDisplayVideo.Target.cs b/Source/TiledDisplayVideo.Target.cs
new file mode 100644
index 0000000000000000000000000000000000000000..220e7b63d2bd4edc8ef62a221571d1343b975f9b
--- /dev/null
+++ b/Source/TiledDisplayVideo.Target.cs
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class TiledDisplayVideoTarget : TargetRules
+{
+	public TiledDisplayVideoTarget(TargetInfo Target) : base(Target)
+	{
+		Type = TargetType.Game;
+
+		ExtraModuleNames.AddRange( new string[] { "TiledDisplayVideo" } );
+	}
+}
diff --git a/Source/RwthVrTemplate/RwthVrTemplate.Build.cs b/Source/TiledDisplayVideo/TiledDisplayVideo.Build.cs
similarity index 86%
rename from Source/RwthVrTemplate/RwthVrTemplate.Build.cs
rename to Source/TiledDisplayVideo/TiledDisplayVideo.Build.cs
index 1dae871ef02f683f69853ad4ddb46b241975b708..1e1396d2af8954ae100241521fddfea0276ace2b 100644
--- a/Source/RwthVrTemplate/RwthVrTemplate.Build.cs
+++ b/Source/TiledDisplayVideo/TiledDisplayVideo.Build.cs
@@ -2,9 +2,9 @@
 
 using UnrealBuildTool;
 
-public class RwthVrTemplate : ModuleRules
+public class TiledDisplayVideo : ModuleRules
 {
-	public RwthVrTemplate(ReadOnlyTargetRules Target) : base(Target)
+	public TiledDisplayVideo(ReadOnlyTargetRules Target) : base(Target)
 	{
 		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
 	
diff --git a/Source/TiledDisplayVideo/TiledDisplayVideo.cpp b/Source/TiledDisplayVideo/TiledDisplayVideo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9f45b2d6ad242c865a09d55cacb76b375c9b8af9
--- /dev/null
+++ b/Source/TiledDisplayVideo/TiledDisplayVideo.cpp
@@ -0,0 +1,4 @@
+#include "TiledDisplayVideo.h"
+#include "Modules/ModuleManager.h"
+
+IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, TiledDisplayVideo, "TiledDisplayVideo" );
diff --git a/Source/RwthVrTemplate/RwthVrTemplate.h b/Source/TiledDisplayVideo/TiledDisplayVideo.h
similarity index 100%
rename from Source/RwthVrTemplate/RwthVrTemplate.h
rename to Source/TiledDisplayVideo/TiledDisplayVideo.h
diff --git a/Source/RwthVrTemplate/nothing.cpp b/Source/TiledDisplayVideo/nothing.cpp
similarity index 100%
rename from Source/RwthVrTemplate/nothing.cpp
rename to Source/TiledDisplayVideo/nothing.cpp
diff --git a/Source/RwthVrTemplate/nothing.h b/Source/TiledDisplayVideo/nothing.h
similarity index 68%
rename from Source/RwthVrTemplate/nothing.h
rename to Source/TiledDisplayVideo/nothing.h
index 4e7b86d78acdbcc84a2b5daecf8ef2766a0a17dc..efe103621b3ad120fb1d498270c7d933fb9d8afb 100644
--- a/Source/RwthVrTemplate/nothing.h
+++ b/Source/TiledDisplayVideo/nothing.h
@@ -2,7 +2,7 @@
 
 #include "CoreMinimal.h"
 
-class RWTHVRTEMPLATE_API nothing
+class TILEDDISPLAYVIDEO_API nothing
 {
 public:
 	nothing();
diff --git a/Source/TiledDisplayVideoEditor.Target.cs b/Source/TiledDisplayVideoEditor.Target.cs
new file mode 100644
index 0000000000000000000000000000000000000000..abe427b88d137cee99500aab9f7e670a902f925b
--- /dev/null
+++ b/Source/TiledDisplayVideoEditor.Target.cs
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class TiledDisplayVideoEditorTarget : TargetRules
+{
+	public TiledDisplayVideoEditorTarget(TargetInfo Target) : base(Target)
+	{
+		Type = TargetType.Editor;
+
+		ExtraModuleNames.AddRange( new string[] { "TiledDisplayVideo" } );
+	}
+}
diff --git a/RwthVrTemplate.uproject b/TiledDisplayVideo.uproject
similarity index 86%
rename from RwthVrTemplate.uproject
rename to TiledDisplayVideo.uproject
index 6614b458a265230584dd8079294a5356ee30b2cf..787a66a324aad4cc17105adc18bb159de1225810 100644
--- a/RwthVrTemplate.uproject
+++ b/TiledDisplayVideo.uproject
@@ -3,9 +3,10 @@
 	"EngineAssociation": "4.22",
 	"Category": "",
 	"Description": "",
+	"Enterprise": true,
 	"Modules": [
 		{
-			"Name": "RwthVrTemplate",
+			"Name": "TiledDisplayVideo",
 			"Type": "Runtime",
 			"LoadingPhase": "Default",
 			"AdditionalDependencies": [