begin work of making the iterator smart