implemented crossover