                maintain-ancestors atom-generators]
         :as argmap}]
   (let [uniform-mutation-constant-tweak-rate 
-        (number uniform-mutation-constant-tweak-rate)
+        (random-element-or-thing uniform-mutation-constant-tweak-rate)
         
         uniform-mutation-float-gaussian-standard-deviation
-        (number uniform-mutation-float-gaussian-standard-deviation)
+        (random-element-or-thing uniform-mutation-float-gaussian-standard-deviation)
         
         constant-mutator (fn [token]
                            (let [const (:instruction token)]

   mutated it will be replaced with a random instruction."
  [ind {:keys [uniform-mutation-rate maintain-ancestors atom-generators]
        :as argmap}]
  (let [uniform-mutation-rate (number uniform-mutation-rate)
        instruction-mutator (fn [token]
                              (assoc token
                                :instruction

  "Returns the individual with each element of its genome possibly deleted, with probability
given by uniform-deletion-rate."
  [ind {:keys [uniform-deletion-rate maintain-ancestors] :as argmap}]
  (let [rate (random-element-or-thing uniform-deletion-rate)
        new-genome (vec (filter identity
                                (mapv #(if (< (lrand) rate) nil %)
                                      (:genome ind))))]
