There are a number of internal names and members which are publicly visible, some good some not so great. I think this is mostly because it's the easy thing to do as its the default visibility in scala. I'd like to start forming more of a policy on restricting visibility in internal apis which would aid in preventing breaking changes in these huge refactors. It's harder to change visibility later and it is to open visibility later.