use generator to make a closue-esque iter, now we can access the iterator from multiple places. Needs to be implemented in all other iters, then code that directly accesses _ vars needs to be changed and checked...