Configuration + ConfigurationProvider refactored for easier deserialization and defaults