transitioning to Iterator

The annoying method resolve bug with generic implementations is still around (#5898), but the conflicts ended up being resolved by adding underscores as a hack, in previous commits.