Moving all the validation code from make-iterator to the initialize-instance method, this will ensure every ierator object is valid...other minor code refinements