added iterator functions