diff --git a/include/game-engine.h b/include/game-engine.h
index d58922982ddc1c6cecd87627157b048859e289a2..6291dedbc1a53d26b588c55605cdcfcf4ecbf0be 100644
--- a/include/game-engine.h
+++ b/include/game-engine.h
@@ -4,6 +4,10 @@
 #include <map>
 #include <string>
 #include <vector>
+#include <chrono>
+#include <ctime>
+	
+	// Return 
 
 #include "logger.h"
 #include "entity-manager.h"
@@ -29,6 +33,8 @@ class GameEngine
 		bool isRunning;
 		void handleInput();
 	private:
+		size_t _frame = 0;
+		std::time_t _frametime = 0;
 		EntityManager _entityManager;
 		Logger& _logger;
 
diff --git a/src/game-engine.cpp b/src/game-engine.cpp
index 1846be3ac4a2e7edafa13d9dc7e2e7bb391b9f50..1219df914f6c2cbc16e66c82660a059bc0b73a8c 100644
--- a/src/game-engine.cpp
+++ b/src/game-engine.cpp
@@ -10,7 +10,7 @@ GameEngine::~GameEngine()
 {
 	this->_logger.info( "Cleaning GameEngine Object" );
 }
-void GameEngine::close(){}
+void GameEngine::close(){ this->isRunning = false; }
 void GameEngine::init()
 {
 	this->isRunning = false;
@@ -24,9 +24,23 @@ Scene* GameEngine::currentScene()
 void GameEngine::run()
 {
 	this->isRunning = true;
+	this->_frame = 0;
+	std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
+	std::time_t _frametime = std::chrono::system_clock::to_time_t(now);
+	while( this->isRunning ) { this->update(); }
 }
+
 void GameEngine::update()
 {
 	this->_entityManager.update();
+	std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
+
+	if( ++this->_frame > 10000 ) { this->close(); } 
+	else if ( this->_frame % 1000 == 0 ) {
+		std::time_t cTime = std::chrono::system_clock::to_time_t(now);
+		size_t delTime = cTime - this->_frametime;
+		this->_frametime = cTime;
+		printf( "Frame: %i at %.2f fps\n", this->_frame / 1000, delTime == 0 ? 0.0 : 1.0 / delTime );
+	}
 }
 void GameEngine::handleInput() {  }
diff --git a/src/main.cpp b/src/main.cpp
index 242a827ea462a60618bf7f86fab54c20ccf7cae8..2e5a4298cbf501a3197c10fde4126c7efd49594e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -40,26 +40,7 @@ int main( int argc, char* argv[] ) {
 
 
 	GameEngine* game = new GameEngine();
-
-	// Main Loop
-	while( state != Exit )
-	{
-		if( ++tickCount > 1000000 )
-		{
-			// Exit
-			state = Exit;
-		}
-
-		// Update Entities
-		game->update();
-		// Process Input
-		// Movement Updates
-		// Collision Updates
-		// Update Game State
-		// Render Game
-
-		_frame++;
-	}
+	game->run();
 
 	userSettings.set( "exit", "teset" );
 	std::cout << userSettings;