upgraded the iter protocol to return tuples of value, key