partial merge() impl