My own thinking about this lead me to this proposal: * If we have a module M with a type T and a proc p that takes T as a first parameter, attach 'p' to 'T' much like in conventional OOP languages. * When you do `from M import T` all its operations are available too but only via the dot call syntax, `obj.foo`.
This will also have further benefits for how to do symbol bindings in generics later on, if a type implements an `==` and `hash` the `from x import T` syntax should not lead to the hiding of these operations. Plenty of operations are affected by this, they should be more like `override` than like `overload`.