diff --git a/2d-game.vcxproj b/2d-game.vcxproj
index 69db831f0abf35f44b4c3f630397a45fe3d48c56..6e89048060844b151b9f7025156e331e6f1fd164 100644
--- a/2d-game.vcxproj
+++ b/2d-game.vcxproj
@@ -149,6 +149,7 @@
     <ClCompile Include="mainGame.cpp" />
     <ClCompile Include="ResourceManager.cpp" />
     <ClCompile Include="SimpleSprite.cpp" />
+    <ClCompile Include="WallEntity.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="DynamicArray.hpp" />
@@ -163,6 +164,7 @@
     <ClInclude Include="resource.h" />
     <ClInclude Include="ResourceManager.h" />
     <ClInclude Include="SimpleSprite.h" />
+    <ClInclude Include="WallEntity.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/2d-game.vcxproj.filters b/2d-game.vcxproj.filters
index 4b6dbb151326f1a1b1b9fa3e27ba792e5d8ba5a2..9cf0a13ba51445fe962c57faee6126995cb26eca 100644
--- a/2d-game.vcxproj.filters
+++ b/2d-game.vcxproj.filters
@@ -24,14 +24,17 @@
     <Filter Include="Header Files\gameObj\management">
       <UniqueIdentifier>{886a9672-46a0-46f4-a068-e12dce07d024}</UniqueIdentifier>
     </Filter>
+    <Filter Include="Header Files\gameObj\entities">
+      <UniqueIdentifier>{2a6abf62-06d5-4f89-a9e3-f572fb2f7d2f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\gameObj\entities">
+      <UniqueIdentifier>{df2376d0-03f2-4c26-aabc-0cfcf53c4a2c}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="game.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Entity.cpp">
-      <Filter>Source Files\gameObj</Filter>
-    </ClCompile>
     <ClCompile Include="ResourceManager.cpp">
       <Filter>Source Files\gameObj</Filter>
     </ClCompile>
@@ -44,14 +47,17 @@
     <ClCompile Include="mainGame.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="Entity.cpp">
+      <Filter>Source Files\gameObj\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="WallEntity.cpp">
+      <Filter>Source Files\gameObj\entities</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="interfaces.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Entity.h">
-      <Filter>Header Files\gameObj</Filter>
-    </ClInclude>
     <ClInclude Include="LazySprite.h">
       <Filter>Header Files\gameObj\render</Filter>
     </ClInclude>
@@ -82,5 +88,11 @@
     <ClInclude Include="DynamicArray.hpp">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="Entity.h">
+      <Filter>Header Files\gameObj\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="WallEntity.h">
+      <Filter>Header Files\gameObj\entities</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/Entity.h b/Entity.h
index 76ecd859308e948aeecd7fad18da92a20a810704..f823398aba02b52ba9f8af0fc1e483949ff69161 100644
--- a/Entity.h
+++ b/Entity.h
@@ -2,10 +2,13 @@
 
 #include "olc.h"
 #include "ITexture.h"
-#include "mainGame.h"
+
+class GameClient;
 
 namespace entities {
 
+	class WallEntity;
+
 	class Entity
 	{
 	protected:
@@ -29,6 +32,12 @@ namespace entities {
 		virtual ~Entity() = default;
 
 		//TODO getAs*** stuff, all virtual
+		//same purpose to dynamic_cast, but without using language server
+		virtual WallEntity* getAsWallEntity()
+		{
+			return nullptr;
+		}
+		
 	};
 
 
diff --git a/ITexture.h b/ITexture.h
index 8aa9e78701d558bb7131a5b336c3eea0ada9ae51..8cb504bed35e0547ec9c21d00c2d539c1dc053a5 100644
--- a/ITexture.h
+++ b/ITexture.h
@@ -1,7 +1,11 @@
 #pragma once
-#include "Entity.h"
+
 #include "olcPGEX_TransformedView.h"
 
+namespace entities {
+	class Entity;
+}
+
 namespace render
 {
 
@@ -10,7 +14,7 @@ namespace render
 	public:
 
 		//Giving the entity will reduce the variables needed, and will make it's use more dynamic
-		virtual void render(olc::TransformedView& scene, Entity& entity) = 0;
+		virtual void render(olc::TransformedView& scene, entities::Entity& entity) = 0;
 		
 		virtual ~ITexture() = default;
 	};
diff --git a/LazySprite.cpp b/LazySprite.cpp
index ae1f5c7583c8a66890c4bd9a7ffb0e4da1f22ddc..9ed1caabbb7cb2af618691883680249352087d0f 100644
--- a/LazySprite.cpp
+++ b/LazySprite.cpp
@@ -6,28 +6,24 @@ namespace render {
 	olc::Decal* LazySprite::getDecay()
 	{
 		if (sprite == nullptr) {
-			this->sprite = render::ResourceManager::getSprite(this->resourceName);
+			this->sprite = ResourceManager::getSprite(this->resourceName);
 		}
 		return this->sprite;
 	}
 
-	LazySprite::LazySprite(const std::string& resName, int u, int v, int sizeU, int sizeV)
-		: LazySprite(resName, olc::vi2d(u, v), olc::vi2d(sizeU, sizeV))
+
+	LazySprite::LazySprite(const std::string& resName)
+		: sprite(nullptr), resourceName(resName)
 	{}
-	LazySprite::LazySprite(const std::string& resName, olc::vi2d pos, olc::vi2d size)
-		: resourceName(resName), uv(pos), size(size)
-	{
-		sprite = nullptr;
-	}
 
-	
-	void LazySprite::render(olc::TransformedView& scene, olc::vf2d pos, olc::vf2d scale)
+	void LazySprite::render(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale)
 	{
 		scene.DrawPartialDecal(pos, this->getDecay(), uv, size, scale);
 	}
-	void LazySprite::renderCentered(olc::TransformedView& scene, olc::vf2d pos, olc::vf2d scale)
+	
+
+	void LazySprite::renderCentered(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale)
 	{
-		//probably modify the ints to doubles???
-		render(scene, pos + size*2.0, scale);
+		this->render(scene, pos + size / 2.0f, uv, size, scale);
 	}
 }
diff --git a/LazySprite.h b/LazySprite.h
index e657043236f2aeef48ee15d7c03d471553b52235..f38867cda2ce5f095087e7eb0dcc4bb5408bd344 100644
--- a/LazySprite.h
+++ b/LazySprite.h
@@ -13,28 +13,26 @@ namespace render {
 	class LazySprite
 	{
 	private:
-		olc::Decal* sprite = nullptr;
+		olc::Decal* sprite;
 
 	protected:
 		const std::string resourceName;
 		//int const u, v, sizeU, sizeV;
-		olc::vi2d const uv, size;
+		//olc::vi2d const uv, size;
 		olc::Decal* getDecay();
 	public:
 		/**
 		 * u, v the texture coordinates on the image,
 		 * sizeU, V are the size of that sprite
 		 */
-		LazySprite(const std::string& resName, int u, int v, int sizeU = 16, int sizeV = 16);
-
-		LazySprite(const std::string& resName, olc::vi2d pos, olc::vi2d size = olc::vi2d(16, 16));
+		explicit LazySprite(const std::string& resName);
 
 		/**
 		 * Render the sprite in world-space
 		 */
-		void render(olc::TransformedView& scene, olc::vf2d, olc::vf2d scale = olc::vf2d(1, 1));
+		void render(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale = olc::vf2d(1, 1));
 
-		void renderCentered(olc::TransformedView& scene, olc::vf2d, olc::vf2d scale);
+		void renderCentered(olc::TransformedView& scene, const olc::vi2d& pos, const olc::vf2d& uv, const olc::vf2d& size, olc::vf2d scale = olc::vf2d(1, 1));
 
 		//decal reference is not my stuff, I don't have to delete it.
 	};
diff --git a/ResourceManager.cpp b/ResourceManager.cpp
index 56885329566111e526e977d0c6297ccb6f3cb996..edad00e16667500dd65e36bcf8beaf2b335e9133 100644
--- a/ResourceManager.cpp
+++ b/ResourceManager.cpp
@@ -37,7 +37,10 @@ namespace render
 	 */
 	void ResourceManager::createInstance(std::string* parent)
 	{
-		instance = std::make_unique<ResourceManager>(*new ResourceManager(parent));
+		if(instance != nullptr){
+			throw std::runtime_error("Can't create a second instance of a singleton resource manager");
+		}
+		instance = new ResourceManager(parent);
 	}
 
 	olc::Decal* ResourceManager::getSprite(const std::string& key)
@@ -59,5 +62,5 @@ namespace render
 		return &this->decalData;
 	}
 
-	//std::unique_ptr<ResourceManager> ResourceManager::instance;
+	ResourceManager* ResourceManager::instance = nullptr;
 }
\ No newline at end of file
diff --git a/ResourceManager.h b/ResourceManager.h
index 99e9dc52e66bb545420e5dafaa6c0443ea5035ef..f2eb3146dac5c6542f51f96fdc43eb04d6069607 100644
--- a/ResourceManager.h
+++ b/ResourceManager.h
@@ -1,8 +1,6 @@
 #pragma once
 
 #include <string>
-#include <map>
-#include <memory>
 #include "olcPixelGameEngine.h"
 
 namespace render
@@ -15,7 +13,7 @@ namespace render
 	class ResourceManager
 	{
 	private: //static
-		static std::unique_ptr<ResourceManager> instance;
+		static ResourceManager* instance;
 		static ResourceManager& getInstance(); //who needs that???
 	
 	public: //static
diff --git a/SimpleSprite.cpp b/SimpleSprite.cpp
index 85c79cf176c44522450309de08f87b84513e74f0..ef87941efbc9aadc439d170d309a9cb2fb728ad3 100644
--- a/SimpleSprite.cpp
+++ b/SimpleSprite.cpp
@@ -1,12 +1,12 @@
 #include "SimpleSprite.h"
+#include "Entity.h"
 
-render::SimpleSprite::SimpleSprite(const std::string name, olc::vi2d pos)
-	: sprite(name, pos)
-{
-	
-}
+using namespace olc;
+
+render::SimpleSprite::SimpleSprite(const std::string& name, const vi2d& pos, const vf2d& size)
+	: sprite(name), uv(pos), size(size) {}
 
 void render::SimpleSprite::render(olc::TransformedView& scene, entities::Entity& entity)
 {
-	this->sprite.render(scene, entity.getPos());
+	this->sprite.render(scene, entity.getPos(), uv, size);
 }
diff --git a/SimpleSprite.h b/SimpleSprite.h
index 7f2cc91bf0b8ff773435738fb8a81bbcf8efa60a..ff6a8163fb0d1b44b8a623bd837936c0ed274db5 100644
--- a/SimpleSprite.h
+++ b/SimpleSprite.h
@@ -3,7 +3,6 @@
 #include <string>
 #include "LazySprite.h"
 
-
 namespace render {
 
 	class SimpleSprite :
@@ -11,9 +10,10 @@ namespace render {
 	{
 	private:
 		LazySprite sprite;
-
+		const olc::vf2d uv, size;
+	
 	public:
-		SimpleSprite(const std::string name, olc::vi2d pos);
+		SimpleSprite(const std::string& name, const olc::vi2d& pos, const olc::vf2d& size);
 
 		void render(olc::TransformedView& scene, entities::Entity& entity) override;
 	};
diff --git a/WallEntity.cpp b/WallEntity.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4c161e92377a3dd031c8c43d149eb224855ff902
--- /dev/null
+++ b/WallEntity.cpp
@@ -0,0 +1 @@
+#include "WallEntity.h"
diff --git a/WallEntity.h b/WallEntity.h
new file mode 100644
index 0000000000000000000000000000000000000000..280b8fe49493c4b0b01c3c824bfd21aaeb8ae993
--- /dev/null
+++ b/WallEntity.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "Entity.h"
+
+namespace entities {
+	class WallEntity : public Entity
+	{
+	public:
+
+
+
+
+		//This is a wall entity after all.
+		WallEntity* getAsWallEntity() override
+		{
+			return this;
+		}
+	};
+
+}
diff --git a/game.cpp b/game.cpp
index 0cad066ba2eae28683f5672574a6a3f3e311396c..e136c856347bbf01e2f02159dae41af1fc0a4023 100644
--- a/game.cpp
+++ b/game.cpp
@@ -1,4 +1,5 @@
 #define OLC_PGE_APPLICATION
+#define OLC_PGEX_TRANSFORMEDVIEW
 #include "olcPixelGameEngine.h"
 #include "mainGame.h"
 
diff --git a/mainGame.cpp b/mainGame.cpp
index ea3b542f211ff86eb30a12e7b6bd671d28a8a953..d9946be58a656b7dcfa8f9976b55c49a3816d7e4 100644
--- a/mainGame.cpp
+++ b/mainGame.cpp
@@ -49,3 +49,5 @@ bool GameClient::OnUserUpdate(float fElapsedTime)
 	
 	return true;
 }
+
+GameClient* GameClient::instance = nullptr;
\ No newline at end of file
diff --git a/x64/Release/2d-game.Build.CppClean.log b/x64/Release/2d-game.Build.CppClean.log
new file mode 100644
index 0000000000000000000000000000000000000000..8ec59e3ac3193cfe5f28d681c4e9d8568473a390
--- /dev/null
+++ b/x64/Release/2d-game.Build.CppClean.log
@@ -0,0 +1,19 @@
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.ipdb
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.iobj
+c:\users\kosmx\documents\github\2d-game\x64\release\vc142.pdb
+c:\users\kosmx\documents\github\2d-game\x64\release\wallentity.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\simplesprite.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\resourcemanager.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\maingame.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\lazysprite.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\game.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\entity.obj
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.exe
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.pdb
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\2d-game.write.1u.tlog
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\cl.command.1.tlog
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\cl.read.1.tlog
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\cl.write.1.tlog
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\link.command.1.tlog
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\link.read.1.tlog
+c:\users\kosmx\documents\github\2d-game\x64\release\2d-game.tlog\link.write.1.tlog
diff --git a/x64/Release/2d-game.exe.recipe b/x64/Release/2d-game.exe.recipe
new file mode 100644
index 0000000000000000000000000000000000000000..fcf2687d3b7c1e1bf442f0edb8b9eacbe4914b49
--- /dev/null
+++ b/x64/Release/2d-game.exe.recipe
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project>
+  <ProjectOutputs>
+    <ProjectOutput>
+      <FullPath>C:\Users\kosmx\Documents\GitHub\2d-game\x64\Release\2d-game.exe</FullPath>
+    </ProjectOutput>
+  </ProjectOutputs>
+  <ContentFiles />
+  <SatelliteDlls />
+  <NonRecipeFileRefs />
+</Project>
\ No newline at end of file
diff --git a/x64/Release/2d-game.log b/x64/Release/2d-game.log
new file mode 100644
index 0000000000000000000000000000000000000000..5f282702bb03ef11d7184d19c80927b47f919764
--- /dev/null
+++ b/x64/Release/2d-game.log
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/x64/Release/2d-game.vcxproj.FileListAbsolute.txt b/x64/Release/2d-game.vcxproj.FileListAbsolute.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391