       agw (make-ago-world nil)
       ch1 (ago-chan agw 1)
       ch2 (ago-chan agw 2)
-      out-ch (ago-chan agw 1)]
+      out-ch (ago-chan agw 1)
+      ago-hi-ch (ago-chan agw)
+      ago-bye-ch (ago-chan agw)]
   (go-loop []
     (<! stw-ch)
     (reset! last-snapshot (ago-snapshot agw))

  (go-loop []
    (println :out (<! out-ch))
    (recur))
  (ago agw
       (loop [num-hi 0 num-bye 0]
         (>! out-ch ["num-hi" num-hi "num-bye" num-bye])
         (let [[x ch] (alts! [hi-ch bye-ch])]
           (cond
            (= ch hi-ch)
            (do (>! ch1 [num-hi x])
                (let [child-ch (child agw ch1)
                      [num-hi2 x2] (<! child-ch)]

                             "x" x "num-hi" num-hi
                             "x2" x2 "num-hi2" num-hi2)
                    (recur (inc num-hi) num-bye))))
            (= ch ago-bye-ch)
            (let [child-ch (child agw ch1)]
              (>! ch1 [num-bye x])
              (let [[num-bye2 x2] (<! child-ch)]
