does anything other than the stuff that satisfies the iterator api need to be public?