refactoring the configuration framework to be more reusable