add generic mergesort