add some divide & conquer