added single point cross over to the algorithm