re-organize the iterator module a bit