diff --git a/2d-game.vcxproj b/2d-game.vcxproj
index 7cac94e0b00b558c1d1ed98044c4ea04045d2be4..04e8f1e17f7196530c57ddd6963da08a019e356f 100644
--- a/2d-game.vcxproj
+++ b/2d-game.vcxproj
@@ -168,6 +168,10 @@
     <ClInclude Include="WallEntity.h" />
     <ClInclude Include="WallTexture.h" />
   </ItemGroup>
+  <ItemGroup>
+    <None Include="ClassDiagram.cd" />
+    <None Include="README.md" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
diff --git a/2d-game.vcxproj.filters b/2d-game.vcxproj.filters
index 5c77d055d245233c0a2189b9c0951238a71b5d71..e0fb5b216e1478cd6f5a616d7cf8bbd75fd51ddc 100644
--- a/2d-game.vcxproj.filters
+++ b/2d-game.vcxproj.filters
@@ -101,4 +101,10 @@
       <Filter>Header Files\gameObj\render</Filter>
     </ClInclude>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="README.md">
+      <Filter>Source Files</Filter>
+    </None>
+    <None Include="ClassDiagram.cd" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/ClassDiagram.cd b/ClassDiagram.cd
new file mode 100644
index 0000000000000000000000000000000000000000..83351edbdd5d8341148138125b4127761ae9c243
--- /dev/null
+++ b/ClassDiagram.cd
@@ -0,0 +1,487 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ClassDiagram MajorVersion="1" MinorVersion="1">
+  <Class Name="DynamicArray&lt;T&gt;" Collapsed="true">
+    <Position X="9.5" Y="11.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAACAAAAAAAEAAAggQBQAAAAAAAAAAAAAAIAAAA=</HashCode>
+      <FileName>DynamicArray.hpp</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="GameClient" Collapsed="true">
+    <Position X="1" Y="10" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AgAAAAAAABAAAAAAAAEABAAAAABAAQQACAAAAAAAAAA=</HashCode>
+      <FileName>mainGame.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::IRenderable" Collapsed="true">
+    <Position X="9.75" Y="12.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAA=</HashCode>
+      <FileName>interfaces.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::ITexture" Collapsed="true">
+    <Position X="3.75" Y="10" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAA=</HashCode>
+      <FileName>ITexture.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::LazySprite" Collapsed="true">
+    <Position X="7.75" Y="10.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAIAAAAAAAAAAAAAAgAABAAAAAAQAAAAAAwAAA=</HashCode>
+      <FileName>LazySprite.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::SpriteManager" Collapsed="true">
+    <Position X="7.75" Y="11.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAABAAAAAAAAAAABAAAAAAAAIAAAAAAAAABAAAAAA=</HashCode>
+      <FileName>ResourceManager.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::ResourceManager" Collapsed="true">
+    <Position X="16.75" Y="1.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAABAAAAAABAEFAAAAAFAAAQAAEAAAAAIAAA=</HashCode>
+      <FileName>ResourceManager.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::SimpleSprite" Collapsed="true">
+    <Position X="4.75" Y="11.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAEAAIAAAAAAABAAAAAAAAAAAAAQAgA=</HashCode>
+      <FileName>SimpleSprite.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="render::WallTexture" Collapsed="true">
+    <Position X="2.5" Y="11.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAEAAAAAAAAAAAAAAICAAAAAABAAAAAAgAAAAAAQAAA=</HashCode>
+      <FileName>WallTexture.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="entities::Entity" Collapsed="true">
+    <Position X="0.5" Y="11.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>EABCAAAAQIAAAgAAAACAAIAAAAAIAAIEAAAAAIEQAAA=</HashCode>
+      <FileName>Entity.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="entities::WallEntity" Collapsed="true">
+    <Position X="0.5" Y="12.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAgAAAAIAAAAA=</HashCode>
+      <FileName>WallEntity.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::TransformedView" Collapsed="true">
+    <Position X="8.5" Y="6" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>ABHBQAQAAFAGAzQACAMCyEQQUAAACBAQAsDE4AAIAog=</HashCode>
+      <FileName>olcPGEX_TransformedView.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::TileTransformedView" Collapsed="true">
+    <Position X="8.5" Y="7.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAgAAAAABAAAYAAAEAAAAAEAAKAAAAIAAAAEAIA=</HashCode>
+      <FileName>olcPGEX_TransformedView.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::PixelGameEngine" Collapsed="true">
+    <Position X="1" Y="6.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>QoPpggsYRXDVtjgCGwsE0EVcQaBG2BiAGPRVSMDpMzk=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Sprite" Collapsed="true">
+    <Position X="20.25" Y="1.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAABABBAEACQAAQBQAAAAARAAAAAIAAQAAEAAgAAEAI=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::ResourcePack" Collapsed="true">
+    <Position X="18.5" Y="1.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAgAAAAAEAAAIAAIBAIAgAAAAAAAAAAAACgIAIAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::ImageLoader" Collapsed="true">
+    <Position X="3" Y="3.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAIAAAAAAAAAAAACAAAAAAAAAAIAAgAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Decal" Collapsed="true">
+    <Position X="15" Y="0.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAQAAAAAAAAQAAAAAAAAAAAAABAAAAAAUAEAAAAAAgA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Renderable" Collapsed="true">
+    <Position X="20.25" Y="0.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAQAgAAAAAQAAAAAAAAAAAgAAAAAAEAQEAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Renderer" Collapsed="true">
+    <Position X="5.75" Y="6" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>SAAgAAAAAIBASAAACAAAAgAAAAAEAIBAAIBAAAEACgA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Platform" Collapsed="true">
+    <Position X="4" Y="0.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAIgAAAEAAAABAAAAAAAACAIAAAAAAAAQAEiAAACAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::PGEX" Collapsed="true">
+    <Position X="8.5" Y="4.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>gAAAAAAAABAIAACAAAAgAAAAAAAAAAAAAAAAAAAAgAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Renderer_OGL10" Collapsed="true">
+    <Position X="4.5" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>SAAAASAAQIBASCAACAAAAgAAAAAGAIBAAMJEAAEAAgA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Renderer_OGL33" Collapsed="true">
+    <Position X="6.75" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>SCghAyFBQIBWSCIAGAAAIgABQAAGBJhBAsJMEEEACgg=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::GDIPlusStartup" Collapsed="true">
+    <Position X="18.5" Y="0.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAEBAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::ImageLoader_GDIPlus" Collapsed="true">
+    <Position X="5.25" Y="4.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAIAAAAAAAAAAAAAAAAIAAAAAAAAAgAAAAAAACAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::ImageLoader_LibPNG" Collapsed="true">
+    <Position X="0.75" Y="4.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::ImageLoader_STB" Collapsed="true">
+    <Position X="3" Y="4.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAABA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Platform_Windows" Collapsed="true">
+    <Position X="0.75" Y="1.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAIgEAAEAAAABAABAAAAAKAIAAAAAAAAQAEiAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Platform_Linux" Collapsed="true">
+    <Position X="3" Y="1.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAIgSAAEAAAgAAAAAAAAACAICgAAAAAAUAEiAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Platform_GLUT" Collapsed="true">
+    <Position X="5.25" Y="1.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>gAgIgAAAEAAAAAAAAAAAAACAJAAAQAAAAQAEiAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Class Name="olc::Platform_Emscripten" Collapsed="true">
+    <Position X="7.5" Y="1.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAQAEiAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Class>
+  <Struct Name="olc::Pixel" Collapsed="true">
+    <Position X="20.25" Y="2.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAIAAAAAAAAAAAAAABAQAAAAAAAAAAAAAgAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Struct>
+  <Struct Name="olc::HWButton" Collapsed="true">
+    <Position X="16.75" Y="2.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Struct>
+  <Struct Name="olc::v2d_generic&lt;T&gt;" Collapsed="true">
+    <Position X="10.25" Y="3.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAEAAAAAgQQEAAAgAIAQAAAAAAhKAAgABgAAAAAAE=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Struct>
+  <Struct Name="olc::ResourceBuffer" Collapsed="true">
+    <Position X="15" Y="1.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAIAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Struct>
+  <Struct Name="olc::DecalInstance" Collapsed="true">
+    <Position X="15" Y="2.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AgAAAACAAAAAAACAAAAAAIAAAAAQAAAAAAgAAAAAAgA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Struct>
+  <Struct Name="olc::LayerDesc" Collapsed="true">
+    <Position X="18.5" Y="2.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AkAIAAAAAAAAABAABQAACAAAAAABQAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Struct>
+  <Typedef Name="olc::vi2d" Collapsed="true">
+    <Position X="13.25" Y="3.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::vu2d" Collapsed="true">
+    <Position X="7.25" Y="3.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::vf2d" Collapsed="true">
+    <Position X="12.25" Y="1.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::vd2d" Collapsed="true">
+    <Position X="10.25" Y="5.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="wglSwapInterval_t" Collapsed="true">
+    <Position X="20.25" Y="8" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="glDeviceContext_t" Collapsed="true">
+    <Position X="16.75" Y="5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="glRenderContext_t" Collapsed="true">
+    <Position X="18.5" Y="5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="glSwapInterval_t" Collapsed="true">
+    <Position X="22" Y="5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="locSwapInterval_t" Collapsed="true">
+    <Position X="15" Y="8" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::GLchar" Collapsed="true">
+    <Position X="15" Y="5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::GLsizeiptr" Collapsed="true">
+    <Position X="20.25" Y="5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locCreateShader_t" Collapsed="true">
+    <Position X="16.75" Y="6.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locCreateProgram_t" Collapsed="true">
+    <Position X="15" Y="6.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locDeleteShader_t" Collapsed="true">
+    <Position X="20.25" Y="6.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locShaderSource_t" Collapsed="true">
+    <Position X="22" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locCompileShader_t" Collapsed="true">
+    <Position X="22" Y="5.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locLinkProgram_t" Collapsed="true">
+    <Position X="20.25" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locDeleteProgram_t" Collapsed="true">
+    <Position X="18.5" Y="6.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locAttachShader_t" Collapsed="true">
+    <Position X="15" Y="5.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locBindBuffer_t" Collapsed="true">
+    <Position X="16.75" Y="5.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locBufferData_t" Collapsed="true">
+    <Position X="20.25" Y="5.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locGenBuffers_t" Collapsed="true">
+    <Position X="15" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locVertexAttribPointer_t" Collapsed="true">
+    <Position X="18.5" Y="8" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locEnableVertexAttribArray_t" Collapsed="true">
+    <Position X="22" Y="6.5" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locUseProgram_t" Collapsed="true">
+    <Position X="16.75" Y="8" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locBindVertexArray_t" Collapsed="true">
+    <Position X="18.5" Y="5.75" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locGenVertexArrays_t" Collapsed="true">
+    <Position X="16.75" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Typedef Name="olc::locGetShaderInfoLog_t" Collapsed="true">
+    <Position X="18.5" Y="7.25" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Typedef>
+  <Enum Name="olc::rcode" Collapsed="true">
+    <Position X="18.5" Y="4" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAgCA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Enum>
+  <Enum Name="olc::Key" Collapsed="true">
+    <Position X="16.75" Y="4" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>IgBKPCYRIAQCigCAAQAAwU8kkgMKYJhzAAAAvv//YQE=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Enum>
+  <Enum Name="olc::DecalMode" Collapsed="true">
+    <Position X="15" Y="4" Width="1.5" />
+    <TypeIdentifier>
+      <HashCode>AAgAAAAAACAAAAAAABAAAIAAAAAAAAAAAAAgAAAABAA=</HashCode>
+      <FileName>olcPixelGameEngine.h</FileName>
+    </TypeIdentifier>
+  </Enum>
+  <Font Name="Segoe UI" Size="9" />
+</ClassDiagram>
\ No newline at end of file
diff --git a/Entity.cpp b/Entity.cpp
index 42e55b88243fcba908b67d7ef6804c85b73af9b3..79b64778dc6c6a0f0f0a5c164264c4fbadd078a8 100644
--- a/Entity.cpp
+++ b/Entity.cpp
@@ -34,32 +34,41 @@ namespace entities {
 
 	
 	Entity::Entity(const olc::vf2d& pos)
-		: pos(pos), is_initialized(false){}
+		: pos(pos), is_initialized(false), is_alive(true){}
 	
 	vf2d Entity::getPos() const
 	{
 		return this->pos;
 	}
 	
-	olc::vf2d Entity::getSize() const
+	vf2d Entity::getSize() const
 	{
-		return olc::vf2d(1, 1);
+		return vf2d(1/16, 1/16);
 	}
 	
-	void Entity::render(olc::TransformedView& scene)
+	void Entity::render(TransformedView& scene)
 	{
 		getTexture().render(scene, *this);
 	}
 
-	boolean Entity::isInitialized()
+	bool Entity::isInitialized()
 	{
 		return is_initialized;
 	}
 
+	bool Entity::isAlive() const
+	{
+		return this->is_alive;
+	}
 
 }
 
-TransformedView& operator+=(olc::TransformedView& scene, entities::Entity& entity) {
+TransformedView& operator+=(TransformedView& scene, entities::Entity& entity) {
 	entity.render(scene);
 	return scene;
+}
+
+TransformedView& operator+=(TransformedView& scene, std::shared_ptr<entities::Entity>& entity) {
+	entity->render(scene);
+	return scene;
 }
\ No newline at end of file
diff --git a/Entity.h b/Entity.h
index 1ef293bc32fd70cabc22ae48084caf7a32c7d6c1..064889f78f27df7b79b8985b802c1518fbee3c59 100644
--- a/Entity.h
+++ b/Entity.h
@@ -18,16 +18,18 @@ namespace entities {
 		virtual olc::vf2d getHitBoxSize() const = 0;
 		virtual olc::vf2d getCollision(const Entity& other);
 		bool is_initialized;
+		bool is_alive; //walls shouldn't have variables like this. But it will be an intended bug.
 	public:
-		
+
 		Entity(const olc::vf2d& pos);
 
 		virtual void init(GameClient& client){}
-		virtual boolean isInitialized();
+		virtual bool isInitialized();
 
 		//nodiscard???
 		[[nodiscard]] virtual olc::vf2d getPos() const;
 		[[nodiscard]] virtual olc::vf2d getSize() const;
+		[[nodiscard]] virtual bool isAlive() const;
 
 		virtual void tick(GameClient& client, float deltaT){}
 
@@ -51,4 +53,5 @@ namespace entities {
 /**
  * I literally add entities to the scene :D
  */
-olc::TransformedView& operator+=(olc::TransformedView&, entities::Entity&);
\ No newline at end of file
+olc::TransformedView& operator+=(olc::TransformedView&, entities::Entity&);
+olc::TransformedView& operator+=(olc::TransformedView&, std::shared_ptr<entities::Entity>&);
\ No newline at end of file
diff --git a/README.md b/README.md
index 3a0ccc33b420e7307c51fc9db2691b79345651ae..935d539712015bed762674469aa70ab8b44d88d9 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 # :D
+
+## It's not a bug. It's an undocumented feature
\ No newline at end of file
diff --git a/WallTexture.cpp b/WallTexture.cpp
index e611ce6b3d313c1d376c94bb7a19299db0414088..d03cd23f297b1c728ee6b2d295c8ec812a289682 100644
--- a/WallTexture.cpp
+++ b/WallTexture.cpp
@@ -20,7 +20,7 @@ namespace render
 
 		//I can't use index[] because that is not const function... WHY???
 		offset += (offsetMap.find(wallEntity.getNeighbourID())->second * this->size);
-		this->sprite.render(scene, wallEntity.getPos(), offset, size, wallEntity.getSize());
+		this->sprite.renderCentered(scene, wallEntity.getPos(), offset, size, wallEntity.getSize());
 	}
 
 
diff --git a/mainGame.cpp b/mainGame.cpp
index 1af7bb5544365e0fd57912942007ecaa3940f2dc..bcba77c3f2dd99cc0dfbece2a24c2ed81029ad75 100644
--- a/mainGame.cpp
+++ b/mainGame.cpp
@@ -5,6 +5,7 @@
 const float maxTimeDelta = 0.05f;
 using namespace std;
 using namespace entities;
+using namespace olc;
 
 GameClient& GameClient::createInstance()
 {
@@ -40,10 +41,12 @@ bool GameClient::OnUserCreate()
 
 bool GameClient::OnUserUpdate(float fElapsedTime)
 {
+
+	
 	fElapsedTime = std::min(maxTimeDelta, fElapsedTime);
 	//return false if it want to exit.
 
-	for(std::shared_ptr<Entity> entity : this->getEntities()){
+	for(std::shared_ptr<Entity>& entity : this->getEntities()){
 		entity->tick(*this, fElapsedTime);
 	}
 
@@ -53,6 +56,22 @@ bool GameClient::OnUserUpdate(float fElapsedTime)
 			entity->init(*this);
 		}
 	}
+
+	//lambda remove condition. because why not?
+	entities.removeIf([](const shared_ptr<Entity>& entity)->bool
+		{
+			return !entity->isAlive();
+		});
+
+	TransformedView scene;
+
+	scene.Initialise()
+
+	for(auto& entity : entities){
+		// I literally add entities to the scene :D
+		scene += entity;
+	}
+	
 	return true;
 }