     
     public final func onStart(_ handler: @escaping ()->()) {
         _internalQueue.async { [weak self] in
-            self?._startHandler = handler
+            self?._startHandlers.append(handler)
         }
     }
     
     public final func onProgress(_ handler: @escaping ProgressHandler) {
         _internalQueue.async { [weak self] in
-            self?._progressHandler = handler
+            self?._progressHandlers.append(handler)
         }
     }
     
     public final func onFinish(_ handler: @escaping FinishHandler) {
         _internalQueue.async { [weak self] in
-            self?._finishHandler = handler
+            self?._finishHandlers.append(handler)
         }
     }
     

        }
        
        // If needed, provide feedback about the fact we've started
        if let feedback = self._startHandler {
            queueForFeedback.async {
                feedback()
            }
        }
    }

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