Added crossover and mutation