added iterator generator