added crossover, mutation, random baseline, and some selection