     (will-mount [_]
       (let [chan-to-path-map (apply merge
                                     (for [team [:team1 :team2]
-                                          chan [:score]]
+                                          chan [:score :player1 :player2]]
                                       {(om/get-state owner [team chan]) [team chan]}))]
         (go-loop []
           (let [[v c] (alts! (keys chan-to-path-map))
                 path (get chan-to-path-map c)]
             (condp = (second path)
-              :score (handle-score-update report-match path v)
-              nil)
+              :score   (handle-score-update report-match path v)
+              (handle-player-update report-match path v))
             (recur)))))
 
     om/IRenderState

        (when other-score
          (update-score! report-match other other-score score))))))

(defn report-match-component [{:keys [players report-match] :as app} owner]
  (reify
    om/IInitState
    (init-state [_]
      (letfn [(team-chans-fact [] {:score (chan)})]
              {:team1 (team-chans-fact)
               :team2 (team-chans-fact)}))


      :on-change (fn [e]
                   (let [player-id (-> e .-target .-value uuid/make-uuid-from)
                         player    (first (get player-lookup player-id))]
                     (put! change-ch player)))}
     [:option {:value "nil" :disabled "disabled"} "Pick a player"]
     (map (fn [{:keys [id name]}]
            [:option {:value id} name])
