   [ind {:keys [uniform-mutation-rate uniform-mutation-tag-gaussian-standard-deviation
                maintain-ancestors atom-generators]
         :as argmap}]
-  (let [constant-mutator (fn [token]
+  (let [uniform-mutation-rate 
+        (number uniform-mutation-rate)
+        
+        uniform-mutation-tag-gaussian-standard-deviation
+        (number uniform-mutation-tag-gaussian-standard-deviation)
+         
+        constant-mutator (fn [token]
                            (let [const (:instruction token)]
                              (if (tag-instruction? const)
-                               (tag-gaussian-tweak token uniform-mutation-tag-gaussian-standard-deviation)
+                               (tag-gaussian-tweak token 
+                                                   uniform-mutation-tag-gaussian-standard-deviation)
                                token)))
         token-mutator (fn [token]
                         (if (< (lrand) uniform-mutation-rate)

(defn uniform-float-mutation
  "Uniformly mutates individual. For each float in the genome, there is
   uniform-mutation-constant-tweak-rate probability of being mutated."
  [ind {:keys [uniform-mutation-constant-tweak-rate uniform-mutation-float-gaussian-standard-deviation
               maintain-ancestors atom-generators]
        :as argmap}]
  (let [constant-mutator (fn [token]
                           (let [const (:instruction token)]
                             (if (float? const)
                               (assoc token

  [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
