They are a complicated feature that are designed for a specific thing - ad-hoc overloading. They break down if you want to use them for other modularity stuff, and take up room in the language for a feature that could allow for that _and_ ad-hoc overloading (ie. a module system).