iterator design pattern added