Added uniform crossover and some small refactoring
Merge