public void run() {
		LevelLoader loader = new LevelLoader(this, "arena.svg");
		loader.loadObjects();
		addPhysicsObjects();

		while (true) {
			lastFrame = System.currentTimeMillis();

			try {
				Thread.sleep(SLEEP_TIME);
			} catch (InterruptedException e) {
				System.err.println("Failed to sleep in Model loop. Error:");
				e.printStackTrace();
			}
			if (GameState.isModelRunning()) {
				addPhysicsObjects();
				removeDeadPhysicsObjects();
				checkEvents();
				
				try {
					for (PhysicsObject object : physicsObjects) {
						if (object instanceof Enemy) {
							((Enemy) object).goTo(player.getPosition());
						}
					}

					world.step(GameState.TIME_STEP, GameState.VELOCITY_ITERATIONS,
							GameState.POSITION_ITERATIONS);
				} catch (ArrayIndexOutOfBoundsException e) {
					e.printStackTrace();
				}

				elapsedTime += System.currentTimeMillis() - lastFrame;
			}
		}
	}