diff --git a/.gitmodules b/.gitmodules
index f3748ee10aa95ba9ef5f1c69d6bb67523667ef49..1f0eb496973c964d945a0da9ea10ac692f4fe8a9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,7 +10,3 @@
 	path = external/nlohmann-json
 	url = https://github.com/nlohmann/json.git
 	branch = origin/master
-[submodule "ktxlib"]
-	path = external/ktxlib
-	url = https://github.com/KhronosGroup/KTX-Software.git
-	branch = origin/master
diff --git a/Data/Textures/test.ktx b/Data/Textures/test.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..9add869edebe42cf5eb2deac36c93a122db644f1
Binary files /dev/null and b/Data/Textures/test.ktx differ
diff --git a/external/ktxlib b/external/ktxlib
deleted file mode 160000
index 94170beb4189d6fdacf49fb900d4393a9ad0dd05..0000000000000000000000000000000000000000
--- a/external/ktxlib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 94170beb4189d6fdacf49fb900d4393a9ad0dd05
diff --git a/src/Engine/AssetManager/AssetManager.cpp b/src/Engine/AssetManager/AssetManager.cpp
index 74a96f37b467135f281e6b62167663fa1d37dc0d..9d2ec01faed6293e0af84af3adf269535f95c59b 100644
--- a/src/Engine/AssetManager/AssetManager.cpp
+++ b/src/Engine/AssetManager/AssetManager.cpp
@@ -14,12 +14,12 @@ struct AssetManagerInfo
 	std::string_view relativePath;
 };
 
-static const std::map<Engine::AssetManager::Sprite, AssetManagerInfo> textureInfos
+static const std::map<size_t, AssetManagerInfo> textureInfos
 {
-	{ Engine::AssetManager::Sprite::None, {"None" , ""} },
-	{ Engine::AssetManager::Sprite::Default, {"Default", "defaultTexture.png"} },
-	{ Engine::AssetManager::Sprite::Test, {"Test", "test.png"} },
-	{ Engine::AssetManager::Sprite::Circle, {"Circle", "circle.png"} },
+	{ size_t(Engine::AssetManager::Sprite::None), {"None" , ""} },
+	{ size_t(Engine::AssetManager::Sprite::Default), {"Default", "defaultTexture.png"} },
+	{ size_t(Engine::AssetManager::Sprite::Test), {"Test", "test.png"} },
+	{ size_t(Engine::AssetManager::Sprite::Circle), {"Circle", "circle.png"} },
 };
 
 static const std::map<size_t, AssetManagerInfo> meshInfos
@@ -43,7 +43,16 @@ namespace Engine
 				return std::string(meshFolderPath) + std::string(iterator->second.relativePath);
 		}
 
-		std::optional<Renderer::MeshDocument> AssetManager::LoadMesh(size_t i)
+		std::string GetTexturePath(size_t i)
+		{
+			auto iterator = textureInfos.find(i);
+			if (iterator == textureInfos.end())
+				return {};
+			else
+				return std::string(textureFolderPath) + std::string(iterator->second.relativePath);
+		}
+
+		std::optional<Renderer::MeshDocument> LoadMesh(size_t i)
 		{
 			auto path = GetMeshPath(i);
 			if (path == "")
@@ -69,6 +78,11 @@ namespace Engine
 
 			return { Renderer::MeshDocument(std::move(newInfo)) };
 		}
+
+		std::optional<Renderer::TextureDocument> LoadTexture(size_t i)
+		{
+			return {};
+		}
 	}
 	
 }
diff --git a/src/Engine/AssetManager/AssetManager.hpp b/src/Engine/AssetManager/AssetManager.hpp
index ed4ba0370cc04ec834a8ad6c41086fa1f59c73b4..74368254498f920cb61ff956236c44e876b02de7 100644
--- a/src/Engine/AssetManager/AssetManager.hpp
+++ b/src/Engine/AssetManager/AssetManager.hpp
@@ -9,6 +9,7 @@
 #include <optional>
 
 #include "../Renderer/MeshDocument.hpp"
+#include "../Renderer/TextureDocument.hpp"
 
 namespace Engine
 {
@@ -18,8 +19,10 @@ namespace Engine
 		constexpr std::string_view meshFolderPath = "Data/Meshes/";
 
 		std::string GetMeshPath(size_t i);
+		std::string GetTexturePath(size_t i);
 
 		std::optional<Renderer::MeshDocument> LoadMesh(size_t i);
+		std::optional<Renderer::TextureDocument> LoadTexture(size_t i);
 	}
 
 	namespace AssMan = AssetManager;
diff --git a/src/Engine/AssetManager/TextureDocument.hpp b/src/Engine/AssetManager/TextureDocument.hpp
index 83403430fe7ed10f81a67dbd12573f0edb83ca49..169411060727b60b227db022bfa8d535dc580931 100644
--- a/src/Engine/AssetManager/TextureDocument.hpp
+++ b/src/Engine/AssetManager/TextureDocument.hpp
@@ -3,6 +3,7 @@
 #include <array>
 #include <vector>
 #include <optional>
+#include <string>
 
 namespace Engine
 {
diff --git a/src/Engine/AssetManager/TextureDocument.inl b/src/Engine/AssetManager/TextureDocument.inl
index 288748324561c24d5b99f2001a87cd17f0fdaf3f..1a52d37d67041f540a43e8baac7d1bf4c3d3fa53 100644
--- a/src/Engine/AssetManager/TextureDocument.inl
+++ b/src/Engine/AssetManager/TextureDocument.inl
@@ -2,12 +2,25 @@
 
 #include "TextureDocument.hpp"
 
+#include <string>
+#include <optional>
+
+#include "ktx.h"
+
 namespace Engine
 {
 	namespace AssetManager
 	{
 		std::optional<TextureDocument> LoadTextureDocument(std::string path)
 		{
+			if (path == "")
+				return {};
+
+			ktxTexture* texture;
+			KTX_error_code result = ktxTexture_CreateFromNamedFile(path.c_str(), KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT, &texture);
+
+
+
 			return {};
 		}
 	}
diff --git a/src/Engine/Engine.cpp b/src/Engine/Engine.cpp
index c312ea4f654ed51ea95a4aee53b79f51bdd2d086..a355415e9fcc89549451e53881accaa9a58a25e0 100644
--- a/src/Engine/Engine.cpp
+++ b/src/Engine/Engine.cpp
@@ -69,6 +69,7 @@ namespace Engine
 		rendererInitInfo.surfaceHandle = Application::Core::GetMainWindowHandle();
 
 		rendererInitInfo.assetLoadCreateInfo.meshLoader = &AssMan::LoadMesh;
+		rendererInitInfo.assetLoadCreateInfo.textureLoader = &AssMan::LoadTexture;
 
 		rendererInitInfo.openGLInitInfo.glSwapBuffers = &Application::Core::GL_SwapWindow;
 		Renderer::Core::Initialize(rendererInitInfo);
diff --git a/src/Engine/Renderer/Renderer.hpp b/src/Engine/Renderer/Renderer.hpp
index 2abf2052789b8a7844215cfee93d7c50ab2dab41..38bdacde2a291ef9b10f601500565c9b777443ae 100644
--- a/src/Engine/Renderer/Renderer.hpp
+++ b/src/Engine/Renderer/Renderer.hpp
@@ -71,7 +71,7 @@ namespace Engine
 	struct Renderer::InitInfo
 	{
 		API preferredAPI = API::None;
-		Utility::ImgDim surfaceDimensions;
+		Utility::ImgDim surfaceDimensions{};
 		void* surfaceHandle = nullptr;
 
 		AssetLoadCreateInfo assetLoadCreateInfo;
diff --git a/src/Engine/Renderer/TextureDocument.hpp b/src/Engine/Renderer/TextureDocument.hpp
index fce68b392c6d828a5cf9cce8edb7f190287d1f8c..8bc57f257ce5e725f21a2a3f9236b39cc52f0ddb 100644
--- a/src/Engine/Renderer/TextureDocument.hpp
+++ b/src/Engine/Renderer/TextureDocument.hpp
@@ -16,7 +16,7 @@ namespace Engine
 		private:
 			Format format;
 			std::array<uint32_t, 2> dimensions;
-			std::array<uint8_t> byteArray;
+			std::vector<uint8_t> byteArray;
 		};
 
 		enum class TextureDocument::Format
diff --git a/src/main.cpp b/src/main.cpp
index 997145821b93b77584e03c3027cc874820b55ee3..a039f4c1e4e4686713e360aa56374676dc2ff402 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,10 +1,12 @@
 //#include "SDL2/SDL.h"
 
-#include "Engine/Engine.hpp"
+//#include "Engine/Engine.hpp"
+
+#include "Engine/AssetManager/TextureDocument.hpp"
 
 int main(int argc, char* argv[])
 {
-    Engine::Core::Run();
+	auto test = Engine::AssMan::LoadTextureDocument("Data/Textures/test.ktx");
 
     return 0;
 }
\ No newline at end of file