more concise and faster
merge