changing evolotion loop to be recursive and updating project to leverage tail calls