   (let [run-fn! (fn [k & args]
                   (doseq [screen screen-objects]
                     (apply (get screen k) args)))]
-    (some-> game-object .getScreen .dispose)
     (.setScreen game-object
       (reify Screen
         (show [this]

     :resize (fn [w h]
               (execute-fn! on-resize :width w :height h)
               (update-screen! @screen))
     :resume #(execute-fn! on-resume)
     :dispose #(execute-fn! on-dispose)}))

(defmacro defscreen
  "Defines a screen, and creates vars for all the functions inside of it. All


(defn defscreen*
  [screen entities
   {:keys [on-show on-render on-hide on-pause on-resize on-resume on-timer]
    :as options}]
  (let [execute-fn! (fn [func & {:keys [] :as options}]
                      (when func
