Adding IProgress interface.
Correctly flow the synchronization context.