Require an iterator instead of allowing arrays

This will let us pass in ArrayIterators which is fine