EM core algorithm