   (let [target (apply str (take 20 target))
         text (str text " " target)
         id (.toString (java.util.UUID/randomUUID))]
-    (swap! app update-in [:timers] conj
-           (Timer. id text (t/now) (tr/parse-time duration) opts))))
+    (swap! app assoc-in [:timers id] (Timer. id text (t/now) (tr/parse-time duration) opts))))
 
 (defn clear-timers []
   (swap! app update-in [:timers]

   [yaqp.parse :as p]
   [clj-http.client :as client]
   [clojure.string :as str]
   [simple-time.core :as t])
  (:use
   [yaqp.debug]
   [seesaw.core :only [listen]]
   [seesaw.mouse :only [location]])
  (:import
   [yaqp.gui Bar]
   [java.io File]

    "tell your guild," (pipe "chat.txt" {:fg "green" :bold true})))

(defn handle-line [line]
  ;(log (str "got line " line))
  (when-not (str/blank? line)
    (p/parse-line line (partition 2 triggers))))

(defn watch []
  (let [watcher (proxy [TailerListenerAdapter] []
