public Point nextPoint(int speed) {
        if(index == -1) throw new NullPointerException("Route hasn't been initialised for following");
        if(index > points.size()) throw new ArrayIndexOutOfBoundsException("Reading past end of route");
        if(index + speed > points.size()) return getLastPoint();

        index += speed;

        return points.get(index - 1);
    }