                 :time new-time
                 :time-step time-step
                 :player (player-step (:player state) time-step keys-pressed)
-                :asteroids (map (fn [a] (asteroid-step a time-step)) (:asteroids state))
+                :asteroids (doall (map (fn [a] (step-thing a time-step)) (:asteroids state)))
                 :bullets
-                    (map (fn [b] (bullet-step b time-step))
+                    (doall (map (fn [b] (step-thing b time-step))
                         (concat
                             (if spawn-new-bullet
                                 [(new-bullet (:player state))]
                                 [])
-                        (:bullets state)))
+                        (:bullets state))))
                 :next-fire-time
                     (if spawn-new-bullet
                         (+ new-time fire-delay)

            :a 0.0
            :av (rand)
            :radii (take 10 (repeatedly #(myrand 5 30)))
        }]
    (assoc a
        :poly (asteroid-shape (:radii a)))))

)

(def acceleration 100.0)
(def angular-acceleration 10.0)

(def player-efficiency 0.7)
(def bullet-efficiency 0.5)
(def bullet-acceleration 200)

(def width 640)
(def height 480)
(def fire-delay 0.3)

(defn do-mod [coll func v]
    (dosync (alter coll (fn [x] (apply func [x v])))))
