private boolean followPath(int x, int y) {
		if(x != targetX || y != targetY || path == null || path.size() == 0 || failedMoveCount > rand) {

			targetX = x;
			targetY = y;
			path = world.getLogic().findRoute(world.getTile(this.x, this.y),
					world.getTile(targetX, targetY), this);
			failedMoveCount = 0;
			rand = randomGen.nextInt(3);
		}

		if (path.size() > 0) {
			Tile next = path.pop();
			if (!move(next.getX(), next.getY())) {
				path.push(next);
				failedMoveCount++;
				return false;
			}
			failedMoveCount = 0;
			return true;
		}

		return false;
	}