Basic implementation.
It can be used finally.
merge