Chg: moved the provider selection process in a separate listener
Add: support for more providers