cleaned up GameLoop