 explicitly specified using a wait-spec)."
   ([target & specs]
      (let [container (doto (CAAT/ContainerBehavior.)
-                       (.setFrameTime (.time target) Number.MAX_VALUE))]
+                       (.setFrameTime (.time target) Number.MAX_VALUE))
+           ;; store the current director, so it can be bound inside callbacks
+           director *director*]
        (loop [[spec & more] specs
               t 0
               last-caat-behavior nil]

               :or {image nil animation-indices [0] default-index 0 key-frames nil frame-time 150 draggable? false thumbnail nil}}]
  (assert (scene? scene) "First arg must be a scene instance.")
  (log/info logger (str "Creating actor"))
  (let [image (->image image (director-of scene) :thumbnail thumbnail) 
        img (doto (CAAT/SpriteImage.)
              (.initialize image 1 (or key-frames (+ 1 (apply max animation-indices)))) 
              (.setAnimationImageIndex (clj->js [default-index]))

        song (.getAudio (. director (getAudioManager)) "song")
        song-supported? (and song (not (not (and song.canPlayType (.replace (.canPlayType song "audio/mpeg;") #"no" "")))))
        song-playing? (atom false)
        play-icon (let [img (->image "play" :thumbnail [35 35])
                        img2 (->image "stop" :thumbnail [35 35])
                        actor (doto (CAAT/Actor.)
                                (.setBackgroundImage img))
                        audio-loop (atom nil)] 
