new algo
merge