@Override
  public Iterator<Tuple> iterator() {
    try {
      this.reset();
    } catch (Exception e) {
      // should not happen as this is second load
      e.printStackTrace();
    }

    if (getLimit() > 0 || getOffset() > 0 || getColOffset() > 0 || getColLimit() > 0) {
      return new TupleIterator(csv, getLimit(), getOffset(), getColLimit(), getColOffset());
    }
    return csv.iterator();
  }