refactor to simplify configuration and shutdown functions
add return value to the load() function
drop the inject() function which encourages bad practice
protect the get() and set() methods which should only be used during init()
rename classes for better backwards compatibility
values are private
rename some methods for consistency