updated mergesort