             [:text {:x 30 :y 80 :style {:font-size default-font :stroke "white" :fill "white"}}
              "(alts! ch (time-out 2000))"]]]])))))
 
-(defn go-block [data owner {:keys [radius algo font-size]}]
-  (reify
-    om/IInitState
-    (init-state [_]
-      {:label ""})
+(defn go-block [data owner {:keys [radius algo font-size] :as opts}]
+  (reify
+    om/IInitState
+    (init-state [_] {:label ""})
     om/IWillMount
-    (will-mount [_]
-      (algo owner))
+    (will-mount [_] (algo owner opts))
     om/IRender
     (render [_]
       (html

                                 (recur)
                                 ))}})])]]]]))))

(defn catch-game-slide [data owner opts]
  (reify
    om/IInitState


           ;; Draw the go-blocks
           (let [instances (om/get-state owner :instances)]
             (for [{:keys [id position channel] :as instance} instances]
               (let [[x y] position]
                 [:g {:transform (str "translate(" x "," y ")")}
                  (om/build
                   go-block data
                   {:opts (merge {:radius (:radius opts)
                                  :font-size (:font-size opts)
                                  :slide owner
                                  :algo catch-game
                                  :instances instances} instance)})])))

           (when-let [[x y] (om/get-state owner :message)]
             [:circle {:cx x :cy y :r 10 :fill "yellow" }])
