Refactoring with desired access control, and updating to deal with Swift name clashes.