deep iterator