 		return _on(onEvent)
 	}
 
+	public func addDownstreamDisposable(_ disposable: IDisposable) {
+		_addDownstreamDisposable(disposable)
+	}
+
 	let _subscribe: (_ onChunk: @escaping (ChunkType) -> Void) -> Scope
 	let _on: (_ onEvent: @escaping (EventType) -> Void) -> Scope
+	let _addDownstreamDisposable: (IDisposable) -> Void
+	let _dispose: () -> Void
 }
 
 public struct WriteableEventingStream<S, T> : IWriteableEventingStream

	public init<U: IReadableEventingStream>(_ delegate: U) where U.ChunkType == ChunkType, U.EventType == EventType {
		_subscribe = delegate.subscribe
		_on = delegate.on
	}

	public func subscribe(_ onChunk: @escaping (ChunkType) -> Void) -> Scope {

			}
		}
	}

	public func addDownstreamDisposable(_ disposable: IDisposable) {
		base.addDownstreamDisposable(disposable)
	}
}

public extension IStream
