    used in ULTRA."
   [parent1 parent2 {:keys [alternation-rate alignment-deviation
                            max-points maintain-ancestors] :as argmap}]
-  (let [s1 (:genome parent1)
+  (let [alternation-rate (number alternation-rate)
+        alignment-deviation (number alignment-deviation)
+        s1 (:genome parent1)
         s2 (:genome parent2)
         new-genome (loop [i 0
                           use-s1 (lrand-nth [true false])

  uniform-addition-and-deletion-rate."
  [ind {:keys [uniform-addition-and-deletion-rate maintain-ancestors atom-generators] 
        :as argmap}]
  (let [addition-rate (if (number? uniform-addition-and-deletion-rate)
                        uniform-addition-and-deletion-rate
                        (lrand-nth uniform-addition-and-deletion-rate))
        deletion-rate (/ 1 (+ (/ 1 addition-rate) 1))
        after-addition (vec (apply concat
                                   (map #(if (< (lrand) addition-rate)

  [parent1 parent2 
   {:keys [uniform-combination-and-deletion-rate maintain-ancestors atom-generators] 
    :as argmap}]
  (let [combination-rate (number uniform-combination-and-deletion-rate)
        deletion-rate (/ 1 (+ (/ 1 combination-rate) 1))
        after-combination (vec 
                            (apply concat
