Abstracted out generic parts of Configuration to AbstractConfiguration