playing around with storing the iterator in the struct instead of the source