needs a duplicate to iterate