next to do: mutate and crossover