providers are implemented as different plugins