Promoted tasks to the upper level

The task classes are now shared between the two provider implementations.