     (doseq [x [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]]
       (streams/put! a x))
     (read b "b")
-    (read c "c")))
+    (read c "c")
 
-    ;; (streams/close! a)
-    ;; (streams/close! b)
-    ;; (streams/close! c)
+    (streams/close! a)
+    (streams/close! b)
+    (streams/close! c)))

  (let [a (streams/stream 10)
        b (streams/stream 10)
        c (streams/stream 10)
        splitter (output-splitter a :multi-thread)
        read (fn [x y]
               (streams/consume
                (fn [v]
                  (Thread/sleep 100)
                  (println (format "%s-%s: %s" (.getName (Thread/currentThread)) y v))) x))]

    (proto/connect splitter b op/default-operations)
    (proto/connect splitter c op/default-operations)

    this))


(defn output-splitter
  "Create and return an output-splitter for the given `source` channel."
  ([source]
