                    :end-tick 200
                    :start-x rect-start-x :end-x rect-end-x
                    :start-y rect-start-y :end-y rect-end-y
-                   :source "signup-animation"
+                   :source signup-animation-source
                    :props {:layer/ui-target "/signup"
                            :layer/ui-id "/signup"
                            :layer/signup-button true}})

      ;; TODO: would be nice to get this a different way :(
      (let [viewport (utils/canvas-size)]
        (when (and (< 640 (:width viewport)) ;; only if not on mobile
                   (empty? (d/datoms @(om/get-shared owner :db) :avet :layer/source "signup-animation")))
          (run-animation owner (signup-animation document (cameras/top-right camera viewport))))))
    om/IWillUnmount
    (will-unmount [_]

            [om.core :as om :include-macros true]
            [om.dom :as dom :include-macros true])
  (:import [goog.ui IdGenerator]))

(defonce signup-animation-source (utils/squuid))

(defn add-tick [tick-state tick tick-fn]
  (update-in tick-state [:ticks tick] (fn [f] (fn [owner]
