As above I disagree. We should not try and hide these types. If they are not comprehensible or usable by the industry at large then we have failed. 

Most will not *need* to implement them, just as I don't implement my own `Iterable`/`Iterator` very often, but we should not try to hide or restrict this.

It won't be a very useful standard if we intend on keeping it hidden.