completed custom iterator and hashes