added crossover and mutate functions, dubious on mutate usefullness