iterators are hard...