cobbling together iterator