added iterator capability