finished with iterator and its helepers