infrastructure for evolve function.