Remove the Cancellation protocol, use NSProgress instead
Update NSProgress category and make private
Improve progress handling