    (for [m mortgages]
      {:mortgage m
       :value    (-> m total-price-breakdown :interest)})
-   state])
+   (state :selected-mortgage)
+   (state :ui-event-chan)])
 
 (sm/defn draw-monthly-payment [mortgages :- [Mortgage]
                                state :- UIState]

(sm/defn format-number [n :- s/Num]
  (str "$" (.toLocaleString n)))

; XXXXXXXXX THIS CANNOT TAKE A STATE ARG
(sm/defn draw-bar [point :- DataPoint
                   offset :- s/Int
                   max-value :- s/Int
                   state
                   ]
  (js/console.log "drawing bar")
  (let [x (+ 110 (* offset 30))

                :width          30
                :transform      (str "rotate(180 " x " " 280 ")")
                :height         height
                :class          (when is-selected-mortgage
                                  "selected")
                :on-mouse-enter #(put! ui-event-chan {:type     :selection-start
                                                      :mortgage (:mortgage point)})}]))

(sm/defn draw-bar-graph [y-axis-label :- s/Str
                         data-points :- [DataPoint]
                         selected-mortgage :- Mortgage
                         ui-event-chan]
  [:svg {:width 520 :height 300}
   [:rect {:x              0
           :y              0
           :width          500
           :height         300
           :fill           "#FFF"
           :on-mouse-enter #(put! ui-event-chan {:type :selection-end})}]
   [:line {:x1           100 :y1 20
           :x2           100 :y2 280
           :stroke       "black"
