     private let block: DispatchWorkItem
 
     private let input: Reference<In>?
-    private let output: Reference<Out>
+    private let output_: Reference<Out>
+    var output: Out? {
+        return output_.value
+    }
 
     /**
      Private init that takes a `@convention(block) () -> Swift.Void`

    private func chain<O>(after seconds: Double? = nil, block chainingBlock: (Out) -> O, queue: GCD) -> AsyncBlock<Out, O> {
        let reference = Reference<O>()
        let dispatchWorkItem = DispatchWorkItem(block: {
            reference.value = chainingBlock(self.output.value!)
        })

        let queue = queue.queue

    private init(_ block: DispatchWorkItem, input: Reference<In>? = nil, output: Reference<Out> = Reference()) {
        self.block = block
        self.input = input
        self.output_ = output
    }


