added iterator stuff back in