     actor))
 
 
-(defn fade! [target director & {:keys [duration] :or {duration 2000}}]
+(defn fade! [target director & {:keys [start-time duration]
+                                :or {start-time nil duration 2000}}]
   (doto target
     (.addBehavior (doto (CAAT/AlphaBehavior.)
-                    (.setFrameTime (.time director) duration)
+                    (.setFrameTime (or start-time (.time director)) duration)
                     (.setValues 1 0)))))
 
 (let [auto-expire-listener

     (fn [scene-time timer-time timetask]
       (dotimes [x batch-count]
         (let [rotation-direction (if (< (Math/random) 0.5) -1 1)
               star (doto (gen-star :radius (rand-nth [12 14 16 18 20])
                                    :color (rand-nth ["yellow" "chartreuse" "orange" "red" "powderblue" "magenta" "cyan"])) 
                      (.enableEvents false)
                      (.setLocation (+ (x-of start-position) (* x 10)) (+ (y-of start-position) (rand-int 30)))

                       [:rotate [:from r2 :to 0 :time 1000]]
                       (fn [t] (animate-text)))))]
      (animate-text))
    (dotimes [i 11]
      (repeatedly-create-stars
       container scene
       :start-time (* i 100)
       :repeat-interval 2000
       :batch-count 5
       :start-position [(* 60 (+ 1 i))
                        (+ 50 (* (mod i 2) 50))]))
    container))
 
