      (clojure.core/take
       take
       (reduce concat
-              (pmap #(do
-                       (log/trace (str "add-bolt-at:" ((:morph-ps language-model) %)))
-                       (let [result (filter (fn [x] (not (= :fail x)))
-                                            (add-bolt-at % % [] % language-model depth max-depth truncate-children take))]
-                         result))
-                    (lightning-bolts language-model spec 0 max-total-depth))))
+              (map #(do
+                      (log/trace (str "add-bolt-at:" ((:morph-ps language-model) %)))
+                      (let [result (filter (fn [x] (not (= :fail x)))
+                                           (add-bolt-at % % [] % language-model depth max-depth truncate-children take))]
+                        result))
+                   (lightning-bolts language-model spec 0 max-total-depth))))
      ((fn [seq]
         (if (= take 1)
           (first seq) ;; if caller only wants one, return just that one, rather than a singleton list.

                                  (log/trace (str "trying parent: " (:rule parent) " with lexical head:"
                                                  ((:morph language-model) %)))
                                  (over/overh parent %))
                               (lazy-seq (shuffle subset)))]
                   (if (and (not (empty? subset)) (empty? result)
                            (> (count subset)
                               50))

                                        
;; during generation, will not decend deeper than this when creating a tree:
;; TODO: should also be possible to override per-language.
(def ^:const max-total-depth 10)

;; TODO support setting max-generated-complements to :unlimited
(def ^:const max-generated-complements 20000)
