Machines which design better versions of themselves