   (let ((e (animal-energy animal)))
     (when (>= e *reproduction-energy*)
       (setf (animal-energy animal) (ash e -1))
-      (let ((animal-nu (copy-structure animal))
+      (let ((animal-nu (copy-animal animal))
             (genes     (copy-list (animal-genes animal)))
             (mutation (random 8)))
         (setf (nth mutation genes) (max 1 (+ (nth mutation genes) (random 3) -1)))

  (add-plants))

(defun draw-world ()
  (loop for y
     below *height*
     do (progn (fresh-line)


(defun evolution ()
  (draw-world)
  (newline)
  (let ((str (read-string "Steps (or 'quit'): ")))
    (cond ((equal str "quit") ())
          (t (let ((x (parse-integer str :junk-allowed t)))
               (if x
