Make generation breeder general, remove the need to subclass it