finished crossover method