       (execute!
         [_]
         (let [t0     (now)
-              active (atom #?(:clj (sequence v-filter (vertices g)) :cljs (into [] v-filter (vertices g))))
+              active (atom (sequence v-filter (vertices g)))
               queue  (atom #{})]
           (add-context-watches g watch-id queue)
           (loop [colls 0, sigs 0]

  [ctx]
  (let [processor ((:processor ctx) (:signal-thresh ctx) (:collect-thresh ctx))]
    (fn [workgroup-size vertices]
      (r/fold workgroup-size single-pass-combine processor vertices))))

(defn two-pass-scheduler
  [ctx]
  (let [sig-fn  ((:signal-fn ctx) (:signal-thresh ctx))
        coll-fn ((:collect-fn ctx) (:collect-thresh ctx))]
    (fn [_ vertices]
      (let [[s-act sigs]  (sig-fn vertices)
            [c-act colls] (coll-fn vertices)]
        [(into s-act c-act) sigs colls]))))


(defn default-score-signal
  "Computes vertex signal score. Returns 0 if value equals prev-val,
  else returns 1."
  [vertex] (if (= @vertex @(:prev-val vertex)) 0 1))

(defn score-signal-with-new-edges
  "Computes vertex signal score. Returns number of *new* outgoing
  edges plus 1 if value not equals prev-val. New edge counter is reset
  each time signal! is called."
  [vertex] (+ (::new-edges @(:state vertex)) (if (= @vertex @(:prev-val vertex)) 0 1)))

(defn default-score-collect
  "Computes vertex collect score, here simply the number
