Refactor to encapsulate configuration selectors.

New behavior only publicly returns necessary functions while wrapping configuration as a read-only function.
Chainable functionality is preserved.
Update tests to use new configuration method.