diff --git a/.gitignore b/.gitignore
index 99b9f78428485e21031a787992ea44b4fe09d293..c2a478f5e6beda9d7245afb614196160b5670475 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,10 @@ bin/
 # Libraries
 libs/
 
+# Doctest generated files
+*.gcna
+*.gcdo
+
 # Build directory
 build/
 
diff --git a/include/main.h b/include/main.h
index 2f48969047e1e1be4c7369c245b54ed7626a46f8..57c47df6c4da6b84e285088aa7c852dff37d437f 100644
--- a/include/main.h
+++ b/include/main.h
@@ -6,6 +6,8 @@
 
 #ifndef __TEST_RUNNER__
 #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
+#include "doctest.h"
+#include "testlist.hpp"
 #endif // __TEST_RUNNER__
 
 
@@ -15,6 +17,7 @@ enum GenerationMethod
 	Cave
 };
 
+#include "maths/maths.h"
 #include "save-manager.h"
 #include "game-state.h"
 #include "world-hex-2d.h"
diff --git a/include/maths/vec2.h b/include/maths/vec2.h
index e01f0f7b9c4172905bb6e0e114b2530983b771cd..e750bb4d992177674fbd06e884b3da9b9af43a2d 100644
--- a/include/maths/vec2.h
+++ b/include/maths/vec2.h
@@ -3,6 +3,7 @@
 
 #include <cmath>
 
+
 class Vec2
 {
 	public:
diff --git a/makefile b/makefile
index 450edc726ace9af7438f3e6a4593df3a7618e51e..3c593174bd0301dc79304cd14f7af5f5df0c464e 100644
--- a/makefile
+++ b/makefile
@@ -34,7 +34,8 @@ TEST_MAIN = DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
 TEST_FLAG = __TEST_RUNNER__
 TEST_DEFINES = -D$(TEST_MAIN) -D$(TEST_FLAG)
 TEST_TARGET = $(BIN_DIR)/test_runner
-TEST_DIR = test
+TEST_HEADER = lib/doctest
+TEST_DIR = tests
 TEST_BUILD_DIR = $(BUILD_DIR)/.test
 
 # Executable directory
@@ -54,8 +55,9 @@ TEST_FILES = $(wildcard $(TEST_DIR)/**/*.test.cpp $(TEST_DIR)/*.test.cpp)
 
 # Object files
 OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRC_FILES))
-TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.cpp,$(TEST_BUILD_DIR)/%.test.o,$(TEST_FILES))
+TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.hpp,$(TEST_BUILD_DIR)/%.test.o,$(TEST_FILES))
 TEST_SRC_OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(TEST_BUILD_DIR)/%.src.o,$(SRC_FILES))
+# TEST_SRC_OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(TEST_BUILD_DIR)/%.src.o,$(SRC_FILES))
 
 # Output executable
 TARGET = $(BIN_DIR)/game
@@ -63,20 +65,21 @@ TARGET = $(BIN_DIR)/game
 all: $(TARGET)
 
 test: $(TEST_TARGET)
+	./$(TEST_TARGET)
 
 $(TARGET): $(OBJ_FILES)
 	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
 
 $(TEST_TARGET): $(TEST_OBJ_FILES) $(TEST_SRC_OBJ_FILES)
-	$(CXX) $(CXXFLAGS) -o $(TARGET) $(TEST_OBJ_FILES) $(TEST_SRC_OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
+	$(CXX) $(CXXFLAGS) -o $(TEST_TARGET) $(TEST_OBJ_FILES) $(TEST_SRC_OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
 
 $(TEST_BUILD_DIR)/%.src.o: $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
 	@mkdir -p $(@D)
-	$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -c -o $@ $<
+	$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -I$(TEST_HEADER) -I$(TEST_DIR) -c -o $@ $<
 
-$(TEST_BUILD_DIR)/%.test.o: $(SRC_DIR)/%.test.cpp
+$(TEST_BUILD_DIR)/%.test.o: $(SRC_DIR)/%.test.hpp $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
 	@mkdir -p $(@D)
-	$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -c -o $@ $<
+	$(CXX) $(CXXFLAGS) $(TEST_DEFINES) $(LDFLAGS) -I$(INC_DIR) -I$(TEST_HEADER) -c -o $@ $<
 
 $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
 	@mkdir -p $(@D)
@@ -85,7 +88,7 @@ $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp ${INC_DIR}/%.h
 clean:
 	rm -rf $(TEST_BUILD_DIR)/* $(TEST_TARGET)
 	rm -rf $(BIN_DIR)/* $(BUILD_DIR)/*
-	rm -rf ./*~ ./*.swp
+	rm -rf ./*~ ./*.swp ./*.gcno
 	rm -rf *~
 
 run: $(TARGET)
diff --git a/src/main.cpp b/src/main.cpp
index 5b0ceb70b8cccf0c7d19e72fbb280767e25a5b32..82f1e0b4d661ad9eaaf907bf03eb01209370ce17 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -61,4 +61,7 @@ int main( int argc, char* argv[] ) {
 }
 // int /*WINAPI*/ WinMain(/*HINSTANCE hInstance, HINSTANCE, LPSTR, int*/) { main(); return 0; }
 
+#else
+#include "doctest.h"
+#include "testlist.hpp"
 #endif // __TEST_RUNNER__
diff --git a/src/world-map3d.cpp b/src/world-map3d.cpp
deleted file mode 100644
index c34b95ae6b9ae95bcac7c27dbb16e49c509bc9d9..0000000000000000000000000000000000000000
--- a/src/world-map3d.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "world-map-3d.h"
-
-WorldMap3D::WorldMap3D()
-	:WorldMap3D( 5, 5, 5 )
-{}
-WorldMap3D::WorldMap3D(
-		uint8_t width,
-		uint8_t height,
-		uint8_t depth
-) : _width(width), _height(height), _depth(depth),
-	_logger( Logger::instance() )
-{
-	this->_logger.info( "Creating new world" ); 	
-	this->generateWorld();
-}
-
-WorldMap3D::~WorldMap3D(){
-	this->_logger.info( "Cleaning world" ); 	
-
-	// Clean Chunk Map
-	for( const auto& [keyX, value1] : this->chunks_)
-	{
-		for( const auto& [keyY, value2] : value1)
-		{
-			for( const auto& [keyZ, chunk] : value2)
-				{ delete chunk; }
-		}
-	}
-}
-
-Chunk* WorldMap3D::getChunk(int chunkX, int chunkY, int chunkZ)
-{
-	auto chX = chunks_.find( chunkX );
-	if( chX != chunks_.end() )
-	{
-		auto chY = chX->second.find( chunkY );
-		if( chY != chX->second.end() )
-		{
-			auto chZ = chY->second.find( chunkZ );
-			if( chZ != chY->second.end() )
-				{ return chZ->second; }
-		}
-	}
-
-	return nullptr;
-}
-
-void WorldMap3D::generateWorld()
-{
-	this->_logger.info( "Generating initial world" );
-	for( uint8_t x = 0; x < this->_width; x++ )
-	{
-		for( uint8_t y = 0; y < this->_height; y++ )
-		{
-			for( uint8_t z = 0; z < this->_depth; z++ )
-			{
-				Chunk* chunk = new Chunk( x, y, z );
-				this->chunks_[z][y][x] = chunk;
-			}
-		}
-	}
-}
diff --git a/tests/maths/vec2.test.cpp b/tests/maths/vec2.test.cpp
deleted file mode 100644
index 638042de078b8b3d085cd185c519bf6783a7033c..0000000000000000000000000000000000000000
--- a/tests/maths/vec2.test.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <iostream>
-#include "doctest.h"
-
-std::cout << "Test" << std::endl;
diff --git a/tests/maths/vec2.test.hpp b/tests/maths/vec2.test.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..babe35eda721897423926b8c26ae05c25a438192
--- /dev/null
+++ b/tests/maths/vec2.test.hpp
@@ -0,0 +1,23 @@
+#include <iostream>
+#include "doctest.h"
+
+
+#include "maths/vec2.h"
+
+TEST_CASE( "Testing Operator Comparisons" ) {
+	Vec2 a( 1, 5 );
+	Vec2 b( 2, 4 );
+
+	SUBCASE( "Addition" )
+	{
+		Vec2 c = a + b;
+		CHECK( c.x == 3 );
+		CHECK( c.y == 9 );
+	}
+	SUBCASE( "Subtraction" )
+	{
+		Vec2 c = a - b;
+		CHECK( c.x == -1 );
+		CHECK( c.y == 1 );
+	}
+}
diff --git a/tests/testlist.hpp b/tests/testlist.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..cccdf5c9d98bc4df2b97bbe8a958da6d81c47132
--- /dev/null
+++ b/tests/testlist.hpp
@@ -0,0 +1,4 @@
+#ifndef __TESTLIST_INCLUDES__
+#define __TESTLIST_INCLUDES__
+#include "maths/vec2.test.hpp"
+#endif // __TESTLIST_INCLUDES__