             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)))
 

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


            index (mod (stack-ref :integer 0 state) (count source))]
        (->> (pop-item :integer state)
             (pop-item :genome)
             (push-item (assoc (vec destination)
                          (min index (count destination))
                          (nth source index))
                        :genome)))
      state)))

