add matrix factorization