Problem: interface iterator isn't simple

do/while is clumsy for an iterator; it's better to set-up the
condition with a first and then loop while (condition), doing
the next at the end of the loop.

Solution: rewrote iterator loop.