                         (om/update! app :triangle [p1 p2 p3]))
                       (do
                         (om/set-state! owner new-state)
-                        (recur type new-state))))))))))
+                        (recur new-state))))))
+              ;; wait for item form control-chan, again
+              (let [_ (println "waiting for next item from control-chan")
+                    item (<! control-chan)
+                    _ (println "recieved from control-cah: " item)]
+                (recur item)))))
+        ;; start off with :triangle
+        (go (>! control-chan :triangle))))
 
     om/IRenderState
     (render-state [_ state]

        (dom/span nil
                  (str "[" x  " " y "] "))))))

(defn item-detail [app owner]
  (reify
    om/IRender
    (render [_]
      (apply dom/div #js {:className "item-detail"}
             "vertices "
             (om/build-all point-detail (:triangle app))))))

(defn item-props [props owner]
  (reify

      (let [_ (println "mounting item-controller")
            event-chan (:event-chan opts)
            control-chan (:control-chan opts)]
        (go
          ;; wait for item from control-chan
          (let [item (<! control-chan)
                _ (println "recieved from control-cah: " item)]

            (loop [type item]
              (loop [state {:step 0}]
                (let [event (<! event-chan)]
                  (let [new-state (h/triangle-transitioner event state)]
                    (if (= (:step new-state) 3)
                      (let [{:keys [p1 p2 p3]} new-state]
