Support for multiple providers (Fixes #23)