       (infof (:name t) "is ready to download")
       (>!! queue t))))
 
+(defn- unpack-downloads[this]
+  "looks for things that should be unpacked"
+  (thread
+    (doseq [t (db/by-state :downloaded)]
+      (unpack-torrent this t))))
+
 (defrecord Downloader [dir download-queue jobs credentials remote-base-url
                        sickbeard-post-process-url concurrent-downloads]
   component/Lifecycle

;;; NEEDS TO BE NOT TERRIBLE
;;; should handle partially downloaded better
(defn- download-file [this filename torrent size]
  (let [file ^java.io.File (apply io/file (conj (get-download-dir this torrent) filename))]
    (when (< (.getTotalSpace file) size)
      (with-open [out (io/output-stream file)]

      (let [num-jobs (:concurrent-downloads this)
            t (assoc this :download-queue (unique (chan num-jobs)))]
        (populate-download-queue (:download-queue t))
        (unpack-downloads t)
        (assoc t :jobs (into [] (for [n (range num-jobs)]
                                  (downloader-job t n)))))
      this))
