refractored iterators