 
 ; renderers
 
-(defn orthogonal-tiled-map
-  [path unit]
-  (OrthogonalTiledMapRenderer. ^TiledMap (tiled-map path) ^double unit))
+(defn orthogonal-tiled-map*
+  [path unit]
+  (OrthogonalTiledMapRenderer. ^TiledMap (tiled-map* path) ^double unit))
+
+(defmacro orthogonal-tiled-map
+  [path unit & options]
+  `(let [object# (orthogonal-tiled-map* ~path ~unit)]
+     (u/calls! ^OrthogonalTiledMapRenderer object# ~@options)
+     object#))
 
 (defmacro orthogonal-tiled-map!
   [screen k & options]
   `(u/call! ^OrthogonalTiledMapRenderer (:renderer ~screen) ~k ~@options))
 
-(defn isometric-tiled-map
-  [path unit]
-  (IsometricTiledMapRenderer. ^TiledMap (tiled-map path) ^double unit))
+(defn isometric-tiled-map*
+  [path unit]
+  (IsometricTiledMapRenderer. ^TiledMap (tiled-map* path) ^double unit))
+
+(defmacro isometric-tiled-map
+  [path unit & options]
+  `(let [object# (isometric-tiled-map* ~path ~unit)]
+     (u/calls! ^IsometricTiledMapRenderer object# ~@options)
+     object#))
 
 (defmacro isometric-tiled-map!
   [screen k & options]
   `(u/call! ^IsometricTiledMapRenderer (:renderer ~screen) ~k ~@options))
 
-(defn isometric-staggered-tiled-map
-  [path unit]
-  (IsometricStaggeredTiledMapRenderer. ^TiledMap (tiled-map path) ^double unit))
+(defn isometric-staggered-tiled-map*
+  [path unit]
+  (IsometricStaggeredTiledMapRenderer. ^TiledMap (tiled-map* path) ^double unit))
+
+(defmacro isometric-staggered-tiled-map
+  [path unit & options]
+  `(let [object# (isometric-staggered-tiled-map* ~path ~unit)]
+     (u/calls! ^IsometricStaggeredTiledMapRenderer object# ~@options)
+     object#))
 
 (defmacro isometric-staggered-tiled-map!
   [screen k & options]
   `(u/call! ^IsometricStaggeredTiledMapRenderer (:renderer ~screen)
                 ~k ~@options))
 
-(defn hexagonal-tiled-map
-  [path unit]
-  (HexagonalTiledMapRenderer. ^TiledMap (tiled-map path) ^double unit))
+(defn hexagonal-tiled-map*
+  [path unit]
+  (HexagonalTiledMapRenderer. ^TiledMap (tiled-map* path) ^double unit))
+
+(defmacro hexagonal-tiled-map
+  [path unit & options]
+  `(let [object# (hexagonal-tiled-map* ~path ~unit)]
+     (u/calls! ^HexagonalTiledMapRenderer object# ~@options)
+     object#))
 
 (defmacro hexagonal-tiled-map!
   [screen k & options]
   `(u/call! ^HexagonalTiledMapRenderer (:renderer ~screen) ~k ~@options))
 
-(defn stage
+(defn stage*
   []
   (Stage.))
+
+(defmacro stage
+  [& options]
+  `(let [object# (stage*)]
+     (u/calls! ^Stage object# ~@options)
+     object#))
 
 (defmacro stage!
   [screen k & options]

    (for [^long i (range (.getCount layers))]
      (.get layers i))))

(defn tiled-map-layer
  [screen layer]
  (if (isa? (type layer) MapLayer)
    layer


; cameras

(defn orthographic-camera*
  []
  (OrthographicCamera.))

(defmacro orthographic-camera
  [& options]
  `(let [object# (orthographic-camera*)]
     (u/calls! ^OrthographicCamera object# ~@options)
     object#))

(defmacro orthographic-camera!
  [screen k & options]
