make improvements to Iterator api

try to make good use of extensions