partly implement evolution