diff --git a/include/game-engine.h b/include/game-engine.h
new file mode 100644
index 0000000000000000000000000000000000000000..e66e60194b902cb42eee173381e2cae1d4f7212e
--- /dev/null
+++ b/include/game-engine.h
@@ -0,0 +1,24 @@
+#ifndef __GAME_H__
+#define __GAME_H__
+
+#include "logger.h"
+#include "entity-manager.h"
+
+class GameEngine
+{
+	public:
+		GameEngine();
+		~GameEngine();
+		void init();
+		void update();
+
+	private:
+		EntityManager _entityManager;
+		Logger& _logger;
+
+		// Window* _window;
+
+		// Systems
+};
+
+#endif // __GAME_H__
diff --git a/include/main.h b/include/main.h
index c9347f5a965f4f6d2b3fb688d15c8dde11522000..506b94a5c742314d84d9d929efb7432fa51d0426 100644
--- a/include/main.h
+++ b/include/main.h
@@ -15,6 +15,7 @@ enum GenerationMethod
 #include "world-hex-2d.h"
 #include "world-map-3d.h"
 #include "chunk.h"
+#include "game-engine.h"
 #include "logger.h"
 #include "entities/entity-generic.h"
 #include "maths/maths.h"
diff --git a/src/game-engine.cpp b/src/game-engine.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..806836f90bce64f17b904cea828af91b5f06b374
--- /dev/null
+++ b/src/game-engine.cpp
@@ -0,0 +1,17 @@
+#include "game-engine.h"
+
+
+GameEngine::GameEngine()
+	: _logger( Logger::instance() )
+{
+	this->_logger.info( "Creating GameEngine Object" );
+}
+GameEngine::~GameEngine()
+{
+	this->_logger.info( "Cleaning GameEngine Object" );
+}
+void GameEngine::init(){}
+void GameEngine::update()
+{
+	this->_entityManager.update();
+}
diff --git a/src/main.cpp b/src/main.cpp
index 3325eb5a3d91864c96f0555a525be3159f29b575..494c2ebac50467a7982a7a171ee4d70631b61d03 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -35,6 +35,9 @@ int main() {
 	// List Saves
 	saveManager.list();
 
+
+	GameEngine* game = new GameEngine();
+
 	// Main Loop
 	while( state != Exit )
 	{
@@ -45,7 +48,7 @@ int main() {
 		}
 
 		// Update Entities
-		entityManager.update();
+		game->update();
 		// Process Input
 		// Movement Updates
 		// Collision Updates
@@ -62,6 +65,7 @@ int main() {
 		entities.pop_back();
 		delete entity;
 	}
+	delete game;
 	
 	// Return 
 	logger.info( "Process Ending" );