   (atom {:current-paddle :paddle-1
          ;; use div behind canvas
          :background (Rect. 0 0 SCALE-W SCALE-H "black")
-          ;; use div behind canvas
+         ;; use div behind canvas
+
          :border     (Frame. 0 0 SCALE-W SCALE-H "#333" 2)
-         :paddle-1   (Paddle. 20 (- SCALE-H 120) 20 100 10 "dodgerblue")
-         :paddle-2   (Paddle. (- SCALE-W 40) 20 20 100 10 "peru")
-         :ball       (Ball. 400 225 13 3 2 "lime")}))
+
+         :score-1    (Score. 0 200 60 SCORE_FONT SCORE_COLOR)
+         :score-2    (Score. 0 (- SCALE-W 200) 60 SCORE_FONT SCORE_COLOR)
+
+         :paddle-1   (Paddle. 20 (- SCALE-H 120) 20 100 10 PLAYER_1_COLOR)
+         :paddle-2   (Paddle. (- SCALE-W 40) 20 20 100 10 PLAYER_2_COLOR)
+
+         :ball       (Ball. 400 225 13 3 2 BALL_COLOR false)}))
 
 ;;-----------------------------------------------------------------------------
 ;; Animation


(extend-type Ball
  IMovable
  (move [{:keys [x y vx vy radius] :as ball}]
    (let [low radius
          vx (if (< low x (- SCALE-W radius)) vx (* -1 vx))
          vy (if (< low y (- SCALE-H radius)) vy (* -1 vy))]
      (assoc ball :x (+ x vx) :y (+ y vy) :vx vx :vy vy))))

;;-----------------------------------------------------------------------------
;; Controllable Objects

    (assoc state :ball (assoc ball :vx (* -1 (:vx ball))))
    state))

(defn score-phase!
  [{:keys [ball score-1 score-2] :as state}]
  (if (<= 0 (:x ball) SCALE-W)
    state
    (let [{:keys [x vx radius]} ball
          {score1 :score} score-1
          {score2 :score} score-2
          p1? (> x SCALE-W)
          p2? (< x 0)
          s1 (assoc score-1 :score (if p1? (inc score1) score1))
          s2 (assoc score-2 :score (if p2? (inc score2) score2))
          ball (cond
                 p2? (assoc ball :x (- SCALE-W 25) :y (/ SCALE-H 2))
                 p1? (assoc ball :x 25 :y (/ SCALE-H 2))
                 :else ball)]
      (assoc state :score-1 s1 :score-2 s2 :ball ball))))

(defn animate-loop!
  [state ctx]
  ;; if start-mode:
  ;; ...
  ;; if play-mode:
  (swap! state #(-> % move-phase! collision-phase! score-phase!))
  ;; if win-mode:
  ;; ...
  (draw-phase! state ctx)
  (.requestAnimationFrame js/window (partial animate-loop! state ctx)))

