public boolean move() {
		if (path.isEmpty())
			return false;
		Vector2D tilePos = new Vector2D(path.get(0).getX(), path.get(0).getY());
		Vector2D trail = tilePos.subtract(getPosition());

		getDirection().rotateMe(getDirection().angleBetween(trail));

		Vector2D step = getDirection().multiply(speed);

		double newX = Math.min(GameConfig.MAP_WIDTH - getWidth(), Math.max(0,
				getPosition().getX() + step.getX()));

		double newY = Math.min(GameConfig.MAP_HEIGHT - getHeight(), Math.max(0,
				getPosition().getY() + step.getY()));

		setPosition(newX, newY);

		if (trail.getMagnitude() < 6)
			path.remove(0);

		return !path.isEmpty();
	}