Extract and mixin iterator-protocol