add mutate algorithm