added merge sort implemention