add Iterator design pattern
book: