   (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]


(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

        (pause [this] (run-fn! :pause))
        (resize [this w h] (run-fn! :resize w h))
        (resume [this] (run-fn! :resume))
        (dispose [this] (run-fn! :dispose))))))

(defn set-screen-wrapper!
  "Sets a function that wraps around all screen functions, allowing you to
