   (let [#^GScene scn (GScene. window)]
     (doto scn
       (initialize-scene)
+      (add-data-to-scene :hooks {})
       (.shouldZoomOnResize true)
       (.shouldWorldExtentFitViewport false)
       (.setStyle *default-scene-style*))

  (doseq [callback (get (get-scene-hooks scn) hook)]
    (apply callback args)))

(defn start-interaction
  "Starts a given interaction for scene. interaction must be a
  function from a scene to a GInteraction object."

  []
  (GWindow. Color/WHITE))

;; setting custom data

(defn- initialize-scene
  "Initializies given scene."
  [#^GScene scn]
  (.setUserData scn (ref {}))
  scn)

(defn add-data-to-scene
  "Adds given data under keyword to scene."
  [#^GScene scn, key, data]
  (dosync
   (alter (.getUserData scn) assoc key data)))

(defn update-data-for-scene
  "Updates data item associated with keys in scene."
  [#^GScene scn, keys, data]
  (dosync
   (alter (.getUserData scn) assoc-in keys data)))

(defn remove-data-from-scene
  "Removes all data associated with key from scene."
  [#^GScene scn, key]
  (dosync
   (alter (.getUserData scn) disj key)))

(defn get-data-from-scene
  "Returns data associated with key from scene."
  [#^GScene scn, key]
  (-> scn .getUserData deref (get key)))

(defn make-scene
  "Makes scene on given window."
