     (loop [colls 0, verts vertices]
       (if verts
         (let [v (first verts)]
-          (if (should-collect? v thresh)
+          (if (> (score-collect v) thresh)
             (do (debug (:id v) "collecting")
                 (collect! v)
                 (recur (inc colls) (next verts)))

        res-chan    (or (:result ctx) (async/chan))
        notify-chan (async/chan (async/dropping-buffer 1))
        watch-id    (keyword (gensym))
        v-filter    (filter #(or (should-signal? % s-thresh) (should-collect? % c-thresh)))
        ->result    (fn [type sigs colls t0] (go (>! res-chan (execution-result type sigs colls t0))))]
    (reify
      #?@(:clj

  (fn [[active sigs colls] v]
    (let [active (conj active v)]
      (if (< (rand) 0.5)
        (if (> (score-signal v) s-thresh)
          (let [vsigs (signal! v sync-vertex-signal)]
            [(into active vsigs) (+ sigs (count vsigs)) colls])
          [active sigs colls])
        (if (> (score-collect v) c-thresh)
          (do (collect! v)
              [active sigs (inc colls)])
          [active sigs colls])))))
