Add multiple type of sources to existing mmc codes (first developed by Dr. Qianqian Fang), modified by Ruoyang Yao