add merge and mergeM