 (defmethod transition :gold [etype state [dest amount]]
   (update-in state [dest etype] + amount))
 (defmethod transition :building [etype state [dest buildings]]
-  (assoc-in state [dest] buildings))
+  (assoc-in state [dest :building] buildings))
 (defmethod transition :add-player [etype state [pname]]
   (-> state
       (update-in [:order] conj pname)

(defn bank-buildings []
  (into {}
        (for [[bname bdesc] common/initial-buildings]
          [bname (select-keys bdesc [:count :column])])))

(swap! estream conj
       [:good :bank :coffee 9]

    (or (nil? current-turn)
        (= :end (first current-turn)))))

(defmulti player-pick-role identity)
(defmethod player-pick-role :mayor [role cstate]
  (swap! estream conj 
         [:rolepick :mayor]
         [:worker :bank -1]
         [:worker (nth (:order cstate) (:role-picker cstate)) 1]))

(defmethod player-pick-role :builder [role cstate]
  (swap! estream conj 
    [:rolepick :builder]))

(defmethod player-pick-role :default [role cstate]
  nil)

(defn whose-turn []
  (let [current-turn (peek (:turns @game))
