clean up the iterator api

more cleanup, splitter is working better now
writers are expected to record errors, but
neverthrow them