   [hosts num-msgs]
   (log/infof "Sending %s messages for %s hosts, will exit upon completion"
              num-msgs (count hosts))
-  (loop [mutated-hosts hosts
-         msgs-to-send num-msgs]
-    (when-not (zero? msgs-to-send)
-      (recur (mapv update-host mutated-hosts) (dec msgs-to-send)))))
+    (loop [mutated-hosts hosts
+           msgs-to-send num-msgs
+           stamp (time/minus (time/now) (time/minutes (* 30 num-msgs)))]
+      (when-not (zero? msgs-to-send)
+          (recur (mapv (partial update-host stamp) mutated-hosts)
+                 (dec msgs-to-send)
+                 (time/plus stamp (time/minutes 30))))))
 
 (defn world-loop
   "Sends out new _clock tick_ messages to all agents.

    hosts catalog changes in accordance to the users preference)

  * Submit the resulting catalog"
  [{:keys [host lastrun catalog report factset base-url run-interval rand-percentage] :as state} clock]
  (if-not (> (- clock lastrun) run-interval)
    state
    (let [catalog (some-> catalog update-catalog (maybe-tweak-catalog rand-percentage))
          report (some-> report update-report-run-fields)
          factset (some-> factset (update-factset rand-percentage))]
      ;; Submit the catalog and reports in separate threads, so as to not
      ;; disturb the world-loop and otherwise distort the space-time continuum.
      (when catalog

   submission.  Also submit a report for the host (if present). This is
   similar to timed-update-host, but always sends the update (doesn't run/skip
   based on the clock)"
  [current-ts {:keys [host lastrun catalog report factset
                      base-url run-interval rand-percentage] :as state}]
  (let [stamp (jitter current-ts 1800)
        catalog (some-> catalog
                        (maybe-tweak-catalog rand-percentage stamp))
        report (some-> report
                       (update-report-run-fields stamp))
        factset (some-> factset
                        (update-factset rand-percentage stamp))]
    (when catalog (client/submit-catalog base-url 6 (json/generate-string catalog)))
    (when report (client/submit-report base-url 5 (json/generate-string report)))
    (when factset (client/submit-facts base-url 4 (json/generate-string factset)))
