implement CA evolution