explanation for iterator