play with divide and conquer calling pattern a bit