               (alternate (list-to-open-close-sequence p1)
                          (list-to-open-close-sequence p2)
                          alternation-rate
-                         alignment-deviation)
+                         alignment-deviation
+                         max-points)
               mutation-rate
               use-ultra-no-paren-mutation
               atom-generators)))))))

                                               ultra-mutation-rate
                                               use-ultra-no-paren-mutation
                                               ultra-pads-with-empties
                                               atom-generators)]
    (if (> (count-points new-program) max-points)
      parent1
      (make-individual :program new-program :history (:history parent1)


(defn ultra-operate-on-programs
  [p1 p2 alternation-rate alignment-deviation mutation-rate
   use-ultra-no-paren-mutation ultra-pads-with-empties atom-generators
   max-points]
  (if (or (not (seq? p1))
          (not (seq? p2)))
    p1 ;; can't do if either program isn't a list
