recover! implements finish or cancel based on all_detected?