restructure to include basic iterator
added iterators