                              has-changes-raw (not (= old-value new-value))
                              has-changes has-changes-raw ;(or initialization has-changes-raw)
 
-                             new-aux-with-consume (if (evolve-reason-provider nil)
+                             new-aux-with-consume (if (and (evolve-reason-provider nil) ((:consumes? tgt) tgt))
                                                     (assoc!
                                                       aux-with-evolved-dependencies
                                                       :consumed
-                                                      (or (:consumed aux-with-evolved-dependencies) ((:consumes? tgt) tgt)))
+                                                      true)
                                                     aux-with-evolved-dependencies)
 
                              new-aux (if has-changes

                aux aux-container]
          (if (< pi ps-count)
                  (let [p (nth properties-to-evolve pi)
                        evolver (p (:evolvers tgt))]
                    (if (or initialization evolver)
                      (let [;; Remember: cannot use get in :evolved-properties check because of http://dev.clojure.org/jira/browse/CLJ-700
                            ;; We don track :children change during initialization. Current implementation of initialization

                                :target-id-path-index (dec (count target-id-path))
                                :evolve-reason-provider evolve-reason-provider
                                :_initialization initialization)
            target-evolvers (:evolvers target-component)
             ps-count (count properties-to-evolve)]
        (loop [ pi 0
                tgt target-component
