updated iterator