Generalize provider behavior.

Now the provider concrete classes are trivial.
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>