improved iterator so it no longer pre-loads the next iteration