                 player)
         eff
             (Math/pow efficiency time-step)
+        ]
+    (step-thing player time-step eff)))
 
-        player
-            (assoc player
-                :x (mod (+ (:x player) (* (:xv player) time-step)) width)
-                :y (mod (+ (:y player) (* (:yv player) time-step)) height)
-                :a (mod (+ (:a player) (* (:av player) time-step)) (* Math/PI 2.0))
-                :xv (* (:xv player) eff)
-                :yv (* (:yv player) eff)
-                :av (* (:av player) eff))]
-
-        player))
-
+(defn asteroid-step [asteroid time-step]
+    (step-thing asteroid time-step 1.0))
 
 (defn game-step [state keys-pressed]
     (let [new-time (now) time-step (- new-time (:time state))]
         (assoc state
             :time new-time
-            :player (player-step (:player state) time-step keys-pressed))))
+            :player (player-step (:player state) time-step keys-pressed)
+            :asteroids (map (fn [a] (asteroid-step a time-step)) (:asteroids state))
+)))
 
 (defn create-game []
     (let [

            (.fill g (player-shape))
            (.setTransform g old-transform))))

(defn game-render [state g]
    (do
        (.setRenderingHint g

        (.setColor g (Color/BLACK))
        (let [rect (.getClipBounds g)]
            (.fillRect g (.x rect) (.y rect) (.width rect) (.height rect)))
        (draw-player (:player state) g))
        (doseq [a (:asteroids state)] (draw-asteroid a g)))

(defn create-component [game-state]
    (doto
