Adds abstract class for plugin providers

Adds abstract class for plugin providers:

- adds new abstract class
- adapts existing plugins to use abstract class
- optimizes code of existing plugins