   `(u/calls! ^TiledMap (tiled-map* ~s) ~@options))
 
 (defmacro tiled-map!
-  [{:keys [^BatchTiledMapRenderer renderer]} k & options]
-  `(u/call! ^TiledMap (.getMap ~renderer) ~k ~@options))
+  [screen k & options]
+  `(let [^BatchTiledMapRenderer object# (or (:renderer ~screen) ~screen)]
+     (u/call! ^TiledMap (.getMap object#) ~k ~@options)))
 
 (defn tiled-map-layers
-  [{:keys [^BatchTiledMapRenderer renderer]}]
-  (assert renderer)
-  (let [layers (-> renderer .getMap .getLayers)]
+  [screen]
+  (let [^BatchTiledMapRenderer renderer (or (:renderer screen) screen)
+        ^MapLayers layers (-> renderer .getMap .getLayers)]
     (for [^long i (range (.getCount layers))]
       (.get layers i))))
 


(defmacro perspective
  [& options]
  `(u/calls! ^PerspectiveCamera (perspective*) ~@options))

(defmacro perspective!
  [screen k & options]


(defmacro tiled-map-cell
  [screen layer x y & options]
  `(let [^TiledMapTileLayer$Cell object# (tiled-map-cell* ~screen ~layer ~x ~y)]
     (u/calls! object# ~@options)))

(defmacro tiled-map-cell!
  [object k & options]
