                :energy (- (:energy bird) bird-cost-of-living))]
     (when (pos? (:energy bird))
       (if (> (:energy bird) child-bird-energy-cost)
-        (list (make-bird (:friendliness bird) (offset-position (:position bird) 2))
+        (list (make-bird (mutate-bird-genome (:genome bird)) (offset-position (:position bird) 2))
               (assoc bird
                 :energy (- (:energy bird) child-bird-energy-cost child-birth-energy-loss)))
         bird))))

(def num-initial-birds 25)
(def minimum-num-birds num-initial-birds)
(def num-initial-foods 20)

;; Energies
(def child-bird-energy-cost 0.15)

  (let [state (report state)
        objects (handle-collisions (:objects state) collision-handlers)
        updated-objects (doall (filter inside-boundary? (update-objects objects (:iteration-step-size state))))
        num-foods-to-add (- minimum-num-foods
                            (count (filter food? updated-objects)))
        num-birds-to-add (- minimum-num-birds
                            (count (filter bird? updated-objects)))]
    (assoc state
      :simulation-time (+ (:simulation-time state) (:iteration-step-size state))
      :objects (concat updated-objects
                       (when (pos? num-birds-to-add)
                         (repeatedly num-birds-to-add random-bird))
                       (when (pos? num-foods-to-add)
                         (repeatedly num-foods-to-add random-food))))))

(start-gui 0.01 update)
