    }
    
    // MARK: - Public
-   func get(priority: Int? = nil, completion: @escaping (_ resource: Resource?) -> Void) -> ConductionResourceObserver {
-      let observer = ConductionResourceObserver()
+   func get(observer: ConductionResourceObserver? = nil, priority: Int? = nil, completion: @escaping (_ resource: Resource?) -> Void) -> ConductionResourceObserver {
+      let observer = observer ?? ConductionResourceObserver()
       dispatchQueue.async {
          self._get(observer: observer, priority: priority, completion: completion)
       }

   private func _forget(_ observer: ConductionResourceObserver) {
      let oldPriority = _priority()
      _waitingBlocks = _waitingBlocks.filter { $0.id != observer }
      _updatePriority(oldPriority: oldPriority)
   }
   

open class ConductionResource<Resource> {
   // MARK: - Private Properties
   private var _waitingBlocks: [(id: ConductionResourceObserver, priority: Int, block: (_ resource: Resource?) -> Void)] = []
   private var _history: [ConductionResourceObserver] = []
   
   // MARK: - Public Properties
   public private(set) var state: ConductionResourceState<Resource> = .empty
