              (inc (:age p1)))
     :fidelity (fn [p1 p2 g]
                 (sequence-similarity g (:genome p1)))
+    :infidelity (fn [p1 p2 g]
+                  (- 1 (sequence-similarity g (:genome p1))))
     :consistency (fn [p1 p2 g]
                    ;; don't compute when calling op via genome instruction
                    (if (or (neg? (:age p1))

        :is-random-replacement
        (if use-child false true)))))


                     -1
                     (- 1
                        (#(- (max %1 %2) (min %1 %2))
                          (sequence-similarity (:genome p1) g)
                          (sequence-similarity 
                            (:genome p1) 
                            (produce-child-genome-by-autoconstruction 
                              g (:genome p1) (:genome p2) false argmap))))))
    :inconsistency (fn [p1 p2 g]
                     ;; don't compute when calling op via genome instruction
                     (if (or (neg? (:age p1))
                             (neg? (:age p2)))
                       -1
                       (#(- (max %1 %2) (min %1 %2))
                         (sequence-similarity (:genome p1) g)
                         (sequence-similarity 
                           (:genome p1) 
                           (produce-child-genome-by-autoconstruction 
                             g (:genome p1) (:genome p2) false argmap)))))))

;; test effects of :proportionate with expressions like this:
;(float ((age-combining-function {:age-combining-function :proportionate})
