add EM algorithm