Improved the provider resolution exception
Fixed indentation
Refactored the factories
Updated the change log