a program which can self evolve