Why create doCrossover? You could just call crossover with the third argument. (It's a moot point if you do the default value thing, but I thought I'd mention it.)