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

            index (mod (stack-ref :integer 0 state) (count genome))]
        (->> (pop-item :integer state)
             (pop-item :genome)
             (push-item (concat (take (inc index) genome)
                                (drop index genome))
                        :genome)))
      state)))


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

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

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

(define-registered
  autoconstructive_integer_rand 
