implemtation
merge