add the EM algorithm