add NMF implementation.