refactored iterators