               (and (sequential? obj1) (sequential? obj2)) :seq-seq)))
 
 (defmethod check-collision :map-map [obj1 obj2]
-  (if (collide? obj1 obj2)
+  (if (and (:collidable? obj1)
+           (:collidable? obj2)
+           (collide? obj1 obj2))
     [(assoc obj1 :hit? true) (assoc obj2 :hit? true)]
     [obj1 obj2]))
 

  (assoc ship :rotation-speed (+ rotation-speed rot)))

(defn accelerate [{:keys [acceleration] :as ship} acc]
  (assoc ship :acceleration (+ acceleration acc)))

(defn toggle-shooting [ship do-shoot?]
  (assoc ship :shooting? do-shoot?))

; ----------------------------------------------------------
; mutable model

   :rotation-speed         0

   :life                   ship-life
   :life-colors            [(Color. 255 0 0) (Color. 255 80 75) (Color. 250 160 75) (Color. 160 160 150)]
   :collidable?            false                            ; is set to true at first movement / shooting
   })

(defn create-shot
