              (or (not (:autoconstructive argmap))
                  (> generation 0)))
     (println "Preserving frontier... ")
-    (let [raw-candidates (concat @frontier (map deref pop-agents))
-          diversifying-candidates (filter :diversifying raw-candidates)
+    (let [diversifying-children (filter :diversifying (map deref pop-agents))
+          diversifying-frontier (filter :diversifying @frontier)
+          verified-frontier (filter (fn [parent]
+                                      (some (fn [child]
+                                              (= (:parent1-genome child)
+                                                 (:genome parent)))
+                                            diversifying-children))
+                                    diversifying-frontier)
+          diversifying-candidates (concat diversifying-children verified-frontier)
           _ (println "Number of diversifying candidates for frontier preservation:"
                      (count diversifying-candidates))
           filtered-candidates (if (empty? diversifying-candidates)

                                (if (< (count diversifying-candidates) (count pop-agents))
                                  (take (count pop-agents) (cycle diversifying-candidates))
                                  diversifying-candidates))]
      (loop [preserved 0
             new-frontier []
             candidates filtered-candidates]

                                               #(drop-last (count (:meta-errors to-preserve)) %))]
            (recur (inc preserved)
                   (conj new-frontier without-meta-errors)
                   (remove-one to-preserve candidates))))))))
  (timer @push-argmap :fitness)
  ;; calculate solution rates if necessary for historically-assessed hardness
  (calculate-hah-solution-rates pop-agents @push-argmap)
