     func procedureQueue(_ queue: ProcedureQueue, willProduceOperation operation: Operation)
 }
 
+public extension ProcedureQueueDelegate {
+
+    func procedureQueue(_ queue: ProcedureQueue, willAddOperation operation: Operation) { /* default no-op */ }
+
+    func procedureQueue(_ queue: ProcedureQueue, willFinishOperation operation: Operation, withErrors errors: [Error]) { /* default no-op */ }
+
+    func procedureQueue(_ queue: ProcedureQueue, willProduceOperation operation: Operation) { /* default no-op */ }
+}
+
 /**
  An `OperationQueue` subclass which supports the features of ProcedureKit. All functionality
  is achieved via the overridden functionality of `addOperation`.

        /// Add an observer to invoke the will finish delegate method
        procedure.addWillFinishBlockObserver { [weak self] procedure, errors in
            if let queue = self {
                self?.delegate?.procedureQueue(queue, willFinishOperation: procedure, withErrors: errors)
            }
        }


     - parameter errors: an array of `Error`s.
     */
    func operationQueue(_ queue: OperationQueue, didFinishOperation operation: Operation)
}

public extension OperationQueueDelegate {

    func operationQueue(_ queue: OperationQueue, willAddOperation operation: Operation) { /* default no-op */ }

    func operationQueue(_ queue: OperationQueue, willFinishOperation operation: Operation) { /* default no-op */ }
}

/**
