the generation is returned along with the final population for runIO