Add cancel support
Fix progress determination