Complete rewrite of the original evolve by Overv