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

                                           :placeholder "0"
                                           :input-props {:type "number"}}})]]))))

(defn render-team-player [report-match players team-path num]
  (let [player-selector (keyword (str "player" num))
        team            (get-in report-match team-path)]
    [:div.form-group
     [:label.control-label.col-lg-4 (str "Player " num)]
     [:div.controls.col-lg-8
      (render-players-select report-match players (conj team-path player-selector))]]))

(defn team-selector [team-num]
  (keyword (str "team" team-num)))

(defn- render-team-controls [report-match players team-num {:keys [score] :as chans}]
  (let [team          ((team-selector team-num) report-match)
        render-player (partial render-team-player report-match players [team-selector])]
    (debug "render team" team)
    [:div.col-lg-5.well.well-lg
     [:h2 (str "Team " team-num ":")]
     (render-player 1)
     (render-player 2)
     (om/build team-score-component
               (get report-match (team-selector team-num))
               {:opts {:score-ch score}})]))

         (filter identity)
         set)))

(defn- render-players-select [report-match players selected-player-path change-ch]
  (let [selected-player  (get-in report-match selected-player-path)
        other-selected   (disj (selected-players report-match) selected-player)
        player-lookup    (group-by :id players)
