        (and @download-supervisor
             (not (.isDone @download-supervisor))))))
 
+;; TODO: integrate curry-func, remove extra args
 (defn- update-domains
-  [download-supervisor domains-info global-config local-config rw-lock]
+  [download-supervisor domains-info local-config curry-func]
   (let [{max-kbs :max-online-download-rate-kb-s
          local-dir :local-dir} local-config
          ^DownloadState state (-> domains-info

             (log-error t "Error when syncing data"))))))

(defn- trigger-update
  [service-handler download-supervisor domains-info global-config local-config rw-lock]
  (with-ret true
    (if (service-updating? service-handler download-supervisor)
      (log-message "UPDATER - Not updating as update process still in progress.")
      (update-domains download-supervisor domains-info global-config local-config rw-lock))))

;; 5. TODO: (What does this mean?) Create Hadoop FS on demand... need
;; retry logic if loaders fail?

    (log-message "UPDATER - Updating domains: " (s/join ", " (keys domains-info)))
    (reset! download-supervisor (start-download-supervisor shard-amount max-kbs state))
    (future
      (try (curry-func domains-info
                       :update? true
                       :state state)
           (log-message "Finished updating all domains from remote.")
           (log-message "Removing all old versions of updated domains!")
           (try (cleanup-domains! (keys domains-info) local-dir)
