add loop to generate one world, TODO OPTIMIZE