added crossover operator