Move progress / completion handler logic to the operation