   ([time]
      (let [tmap (time-map time)]
        (merge tmap {:today (get-in tmap [:stime])
+                    :bg (first images)
                     :on? false}))))
 
 (def state (atom (default-state)))
+(def bg-chan (chan))
+(def end-chan (chan))
 
 (defn get-state
   ([key & keys]

      (when-not (apply expired? (get-state :stime :etime))
        (set-state! :etime (dec-time (get-state :etime))))))

(add-watch state :end
           (fn [k r os ns]
             (when (and (get-state :on?) (apply expired? (get-state :stime :etime)))
               (play-sound)
               (set-state! (default-state (next-time (get-state :time)))))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Generic Views

  (if (= (:twenty-five presets) time)
    (:five presets)
    (:twenty-five presets)))

(defn pomodoro? [five twenty-five]
  (and (= (presets :twenty-five) twenty-five)
       (= (presets :five) five)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Timer logic
(def ^:constant time-speed 1)

(def timer-chan
  (let [c (chan)
