add top-down merge