worked on iterator