        (remove nil?)))
 
 (defn save-pings [{:keys [db user thread-ts]} pings]
+  (trace [:save-pings (:id user) pings])
   (db/update-tags! db pings)
   (slack/send-messages
    user

  (flatten (map (partial evaluate ctx) tags)))

(defmethod evaluate :SLEEP [{:keys [db user] :as ctx} _]
  [:SAVE*
   (map
    (fn [ping]
      [ping ["sleep"]])
    (db/sleepy-pings db user))])

(defn update-pings [pings]
  (->> pings

(defmulti evaluate (fn [context [v & vs]] v))

(defmethod evaluate :CMDS [ctx [_ & vs]]
  (timbre/trace [:evaluate :CMDS vs])
  (doseq [[cmd {:keys [saved error]}] (map (partial evaluate ctx) vs)]
    (when error (timbre/error error))))

