added nmf, kmeans, and cx