         self.currentState = state
         
         // Now get on the feedback queue to finish up
-        self.queueForFeedback.sync {
-            self._finishHandler?(self.currentState)
+        if self._finishHandlers.count > 0 {
+            self.queueForFeedback.sync {
+                for feedback in self._finishHandlers {
+                    feedback(self.currentState)
+                }
+            }
         }
         
         // Remove ourself from the cache / stop retaining self

    
    private let _internalQueue = DispatchQueue(label: "TaskInternal")
    private var _workToDo: TaskWorkBlock?
    private var _startHandler: (()->())?
    private var _progressHandler: ProgressHandler?
    private var _finishHandler: FinishHandler?
    
    static private var _cachedTasks = Dictionary<String, Task>()
    

        // Actually start the work on the worker queue
        self.queueForWork.sync {
            work({ (percent) in
                if self._progressHandlers.count > 0 {
                    self.queueForFeedback.async {
                        for feedback in self._progressHandlers {
                            feedback(percent)
                        }
                    }
                }
            }, { (outcome) in
