add recursion
merge