Refactor providers module through - improving current implementation - supporting new channels - adding unit tests