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

(defn myrand [min max]
    (+ min (rand (- max min))))

(defn step-thing [thing time-step eff]
    (assoc thing
        :x (mod (+ (:x thing) (* (:xv thing) time-step)) width)
        :y (mod (+ (:y thing) (* (:yv thing) time-step)) height)
        :a (mod (+ (:a thing) (* (:av thing) time-step)) (* Math/PI 2.0))
        :xv (* (:xv thing) eff)
        :yv (* (:yv thing) eff)
        :av (* (:av thing) eff)))

(defn rotate [x y a] [
    (+ (* (Math/cos a) x) (* (Math/sin a) y))

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