    (do-action! ship action 1))
   )
 
-(defn reset-game! [ship asteroid]
+(defn reset-game! [ship asteroids]
   (dosync
     (ref-set ship (create-ship))
-    (ref-set asteroid (create-asteroid 2)))
+    (ref-set asteroids (create-asteroids asteroids-start-number asteroid-start-size)))
   nil)
 
 ; ----------------------------------------------------------

; ----------------------------------------------------------
; mutable model
; ----------------------------------------------------------
(defn update-positions! [ship asteroid]
  (dosync
    (alter ship shoot)
    (alter ship move)
    (alter asteroid move))
  nil)

(defn do-action!
  ([ship {:keys [rotation acceleration shoot] :as action} modifier]

(defmethod move :ship [{:keys [direction rotation-speed position speed acceleration shots] :as ship}]
  (let [direction (+ direction (* rotation-speed turn-millis 0.001))
        speed (vec+vec speed (rotate-vec direction [0 (* acceleration turn-millis 0.001)]))
        [x y] (vec+vec speed position)
        position [(mod x width) (mod y height)]
        shots (->> shots
                   (filter #(not (out-of-bounds? %)))
                   (map move))]
