works the iterator