add NMF algorithm