implement mergesort
add unit test