The name() accessor is able to hide the fact that the user's actual name string is hidden in an Arc. (The Arc is still available, since it's needed for caching)
It's more descriptive to call it a cache when there are functions that do all the *actual* OS users stuff separately now.
Similarly, we may as well call its constructor 'new' instead of 'empty_cache', because it's obvious that it's a cache now.