diff --git a/source/App/AppPlatform_windows.cpp b/platforms/windows/AppPlatform_windows.cpp
similarity index 100%
rename from source/App/AppPlatform_windows.cpp
rename to platforms/windows/AppPlatform_windows.cpp
diff --git a/source/App/AppPlatform_windows.hpp b/platforms/windows/AppPlatform_windows.hpp
similarity index 100%
rename from source/App/AppPlatform_windows.hpp
rename to platforms/windows/AppPlatform_windows.hpp
diff --git a/source/main.cpp b/platforms/windows/main.cpp
similarity index 100%
rename from source/main.cpp
rename to platforms/windows/main.cpp
diff --git a/windows_vs/minecraftcpp.vcxproj b/windows_vs/minecraftcpp.vcxproj
index f508ec7..c5f21ff 100644
--- a/windows_vs/minecraftcpp.vcxproj
+++ b/windows_vs/minecraftcpp.vcxproj
@@ -28,9 +28,9 @@
+
-
@@ -316,9 +316,10 @@
+
+
-
@@ -359,7 +360,6 @@
-
@@ -702,32 +702,32 @@
- $(ProjectDir)/../thirdparty;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
+ $(ProjectDir)/../thirdparty;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
$(SolutionDir)bin\$(Configuration)\
obj\$(Configuration)\
- $(ProjectDir)/../thirdparty;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
+ $(ProjectDir)/../thirdparty;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
$(SolutionDir)bin\$(Configuration)\
obj\$(Configuration)\
- $(ProjectDir)/../thirdparty;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
+ $(ProjectDir)/../thirdparty;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
$(SolutionDir)bin\$(Configuration)\
obj\$(Configuration)\
- $(ProjectDir)/../thirdparty;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
+ $(ProjectDir)/../thirdparty;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
$(SolutionDir)bin\$(Platform)\$(Configuration)\
obj\$(Platform)\$(Configuration)\
- $(ProjectDir)/../thirdparty;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
+ $(ProjectDir)/../thirdparty;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
$(SolutionDir)bin\$(Platform)\$(Configuration)\
obj\$(Platform)\$(Configuration)\
- $(ProjectDir)/../thirdparty;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
+ $(ProjectDir)/../thirdparty;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../platforms/windows;$(ProjectDir)/../thirdparty/raknet;$(ProjectDir);$(ProjectDir)/..;$(ProjectDir)/../source;$(ProjectDir)/../source/Network;$(ProjectDir)/../source/Sound;$(ProjectDir)/../source/GameMode;$(ProjectDir)/../source/App;$(ProjectDir)/../source/Base;$(ProjectDir)/../source/GUI;$(ProjectDir)/../source/GUI/Screen;$(ProjectDir)/../source/Renderer;$(ProjectDir)/../source/UserInput;$(ProjectDir)/../source/World;$(ProjectDir)/../source/World/Generator;$(ProjectDir)/../source/World/Item;$(ProjectDir)/../source/World/Tile;$(ProjectDir)/../source/World/Renderer;$(ProjectDir)/../source/World/Entity;$(ProjectDir)/../source/World/Entity/Models;$(ProjectDir)/../source/World/Particle;$(ProjectDir)/../source/World/Storage;$(VC_IncludePath);$(WindowsSDK_IncludePath)
$(SolutionDir)bin\$(Platform)\$(Configuration)\
obj\$(Platform)\$(Configuration)\
diff --git a/windows_vs/minecraftcpp.vcxproj.filters b/windows_vs/minecraftcpp.vcxproj.filters
index 34c1fb4..0b04412 100644
--- a/windows_vs/minecraftcpp.vcxproj.filters
+++ b/windows_vs/minecraftcpp.vcxproj.filters
@@ -144,9 +144,6 @@
-
- Source Files
-
Source Files
@@ -159,9 +156,6 @@
Source Files\App
-
- Source Files\App
-
Source Files\App
@@ -1056,6 +1050,12 @@
Source Files\World\Renderer\Entity
+
+ Source Files\App
+
+
+ Source Files
+
@@ -1067,9 +1067,6 @@
Header Files\App
-
- Header Files\App
-
Header Files\App
@@ -1916,6 +1913,9 @@
Header Files\World\Renderer
+
+ Header Files\App
+