added selection, mutation, and cross over code.