             asteroids)])
 
 (defn generate-asteroid []
-    {
-        :x (rand width)
-        :y (rand height)
-        :xv (rand 10)
-        :yv (rand 10)
-        :a 0.0
-        :av (rand)
-        :radii (take 10 (repeatedly #(myrand 5 30)))
-    })
+    (let [a
+        {
+            :x (rand width)
+            :y (rand height)
+            :xv (rand 10)
+            :yv (rand 10)
+            :a 0.0
+            :av (rand)
+            :radii (take 10 (repeatedly #(myrand 5 30)))
+        }]
+    (assoc a
+        :poly (asteroid-shape (:radii a)))))
 
 (defn default-state [] {
     :time (now)

            (- (:x bullet) (:x asteroid))
            (- (:y bullet) (:y asteroid))
            (:a asteroid))
        p (asteroid-shape (:radii asteroid))]
        (.contains p x y)))

(defn filter-collisions [bullets asteroids]

        (let [old-transform (.getTransform g)]
            (.translate g (:x asteroid) (:y asteroid))
            (.rotate g (:a asteroid))
            (.fill g (:poly asteroid))
            (.setTransform g old-transform))))

(defn draw-bullet [bullet g]
