migrated to combination iterator