final merge by cmm-jg