                                (+ (.-position.y sprite) move-rate))
                       :D (set! (.-position.x sprite)
                                (+ (.-position.x sprite) move-rate))
-                      :else nil)]
+                      :& (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))))))


(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]

  Controllable
  (react-to-user-input [this state time]
    (let [sprite (:sprite this)
          input @(:input state)
          move-rate 1
          move #(condp = %
