 ; tiled maps
 
 (defn tiled-map*
-  [s]
-  (if (string? s)
-    (.load (TmxMapLoader.) s)
-    s))
+  ([]
+    (TiledMap.))
+  ([s]
+    (if (string? s)
+      (.load (TmxMapLoader.) s)
+      s)))
 
 (defmacro tiled-map
   "Returns a [TiledMap](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/maps/tiled/TiledMap.html).

    (tiled-map-layer! layer :get-name)))

(defn tiled-map-cell*
  [screen layer x y]
  (.getCell ^TiledMapTileLayer (tiled-map-layer screen layer) x y))

(defmacro tiled-map-cell
  "Returns a [TiledMapTileLayer.Cell](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/maps/tiled/TiledMapTileLayer.Cell.html)

      (.get layers i))))

(defn tiled-map-layer*
  ([width height tile-width tile-height]
    (TiledMapTileLayer. width height tile-width tile-height))
  ([screen layer]
    (if (isa? (type layer) MapLayer)
      layer
      (->> (tiled-map-layers screen)
           (drop-while #(not= layer (.getName ^MapLayer %)))
           first))))

(defmacro tiled-map-layer
  "Returns a [TiledMapTileLayer](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/maps/tiled/TiledMapTileLayer.html)
