             index (mod (stack-ref :integer 0 state) (count genome))]
         (->> (pop-item :integer state)
              (pop-item :genome)
-             (push-item (concat (take index genome)
-                                (let [g (nth genome index)]
-                                  (list (assoc g :silent true)))
-                                (drop (inc index) genome))
+             (push-item (assoc genome
+                          index
+                          (let [g (nth genome index)]
+                            (assoc g :silent true)))
                         :genome)))
       state)))
 

  genome_new
  ^{:stack-types [:genome]}
  (fn [state]
    (push-item () :genome state)))

(define-registered
  genome_parent1
  ^{:stack-types [:genome]}
  (fn [state]
    (push-item (:parent1-genome state) :genome state)))

(define-registered
  genome_parent2
  ^{:stack-types [:genome]}
  (fn [state]
    (push-item (:parent2-genome state) :genome state)))

(define-registered
  autoconstructive_integer_rand 

            distance (mod (stack-ref :integer 0 state) (count genome))]
        (->> (pop-item :integer state)
             (pop-item :genome)
             (push-item (into (subvec genome distance)
                              (subvec genome 0 distance))
                        :genome)))
      state)))

