   
   private var timer: BulkBufferTimer!
   
-  private let input: (Element) -> Void
+  private let _send: (Element) -> Void
+  private let _onFlush: () -> Void
+
+  private let buffer: AnyBuffer<Element>
     
   public init(
     buffer: AnyBuffer<Element>,
     debounceDueTime: DispatchTimeInterval = .seconds(10),
     targets: [AnyTarget<Element>]
   ) {
-    
+
+    self.buffer = buffer
     self.targets = targets
     
     let output: ([Element]) -> Void = { elements in

  
  public func send(_ element: Element) {
    targetQueue.async {
      self.input(element)
    }
  }
  

      output(elements)
    }
          
    self._send = { newElement in
      
      switch buffer.write(element: newElement) {
      case .flowed(let elements):
        // TODO: align interface of Collection
        return output(elements.map { $0 })
