Followed the iterator contract