first implementation
merge