lots of work on iterators