initailVersionNeedToHaveIterator