add high-level function nnmf