      (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])
+               star (doto (gen-star :radius (rand-nth (map (comp dec dec dec) [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)))

                      ;; (animate [:rotate [:from 0 :to (+ 180 (* (* (rand-int 2) -1) (rand-int 180)))
                      ;;                    :time [scene-time 3000]]])
                      (fall! director :duration (+ 2000 (rand-int 1000)))
                      (fade! director :duration (+ 3000 (rand-int 1000))))]
           (add! target star)
           ;; randomize the star z
           (.setZOrder target star (- (rand-int batch-count) (/ batch-count 2)))

    actor))


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

(let [auto-expire-listener
