update iterator-protocol