final try at iterators