   Controllable
   (react-to-user-input [this state time]
     (let [sprite (:sprite this)
-          control-keys #{:W :A :S :D}
           input @(:input state)
           move-rate 1
           move #(condp = %


(defrecord Bunny [id sprite x y]
  Entity
  (tick [this]
    (let [sprite (:sprite this)
          old-rotation (aget sprite "rotation")]
      (aset sprite "rotation" (+ 0.01 old-rotation))))
  
  Renderable
  (render [this stage]

                               (+ (.-position.y sprite) move-rate))
                      :D (set! (.-position.x sprite)
                               (+ (.-position.x sprite) move-rate))
                      :& (set! (.-position.y sprite)
                               (- (.-position.y sprite) move-rate))
                      :% (set! (.-position.x sprite)
                               (- (.-position.x sprite) move-rate))
                      ;; Parenths are reserved so wrap it in keyword call
                      (keyword "(") (set! (.-position.y sprite)
                                            (+ (.-position.y sprite) move-rate))
                      :' (set! (.-position.x sprite)
                               (+ (.-position.x sprite) move-rate))
                      ;; Otherwise do nothing
                      nil)]
      (doseq [[k v] input]
        (when (= v "on")
          (move k))))))
