       :proj (plmb/fnk [rating-mat pca]
               (sparsity-aware-project-ptpts (get-matrix rating-mat) pca))
 
-;      :proj (plmb/fnk [mat pca]
-              ;(pca-project mat pca))
-
       :base-clusters
             (plmb/fnk [conv rating-mat proj in-conv opts']
-              (greedy
-                (let [proj-mat
-                        (named-matrix (rownames rating-mat) ["x" "y"] proj)
-                      in-conv-mat (rowname-subset proj-mat in-conv)]
-                  (sort-by :id
-                    (kmeans in-conv-mat
-                      (:base-k opts')
-                      :last-clusters (:base-clusters conv)
-                      :cluster-iters (:base-iters opts'))))))
+              (let [proj-mat
+                      (named-matrix (rownames rating-mat) ["x" "y"] proj)
+                    in-conv-mat (rowname-subset proj-mat in-conv)]
+                (sort-by :id
+                  (kmeans in-conv-mat
+                    (:base-k opts')
+                    :last-clusters (:base-clusters conv)
+                    :cluster-iters (:base-iters opts')))))
 
       :base-clusters-proj
             (plmb/fnk [base-clusters]

      ; Compute group-clusters for multiple k values
      :group-clusterings
            (plmb/fnk [conv base-clusters-weights base-clusters-proj opts']
              (into {}
                ; XXX - should test pmap out
                (map
                  (fn [k]
                    [k
                      (sort-by :id
                        (kmeans base-clusters-proj k
                          :last-clusters
                            ; A little pedantic here in case no clustering yet for this k
                            (let [last-clusterings (:group-clusterings conv)]
                              (if last-clusterings
                                (last-clusterings k)
                                last-clusterings))
                          :cluster-iters (:group-iters opts')
                          :weights base-clusters-weights))])
                  (range 2 (inc (max-k-fn base-clusters-proj (:max-k opts')))))))

      ; Compute silhouette values for the various clusterings
      :group-clusterings-silhouettes
            (plmb/fnk [group-clusterings bucket-dists]
              (into {}
                (map
                  (fn [[k clsts]]
                    [k (silhouette bucket-dists clsts)])
                  group-clusterings)))

      ; This smooths changes in cluster counts (K-vals) by remembering what the last K was, and only changing
      ; after (:group-k-buffer opts') many times on a new K value

     base-conv-update-graph
     {:mat (plmb/fnk [rating-mat]
             ; swap nils for zeros - most things need the 0s, but repness needs the nils"
             (mapv (fn [row] (map #(if (nil? %) 0 %) row))
               (get-matrix rating-mat)))

      :pca (plmb/fnk [conv mat opts']
             (wrapped-pca mat (:n-comps opts')
