       ; (println g)
       (cond
         (still-moving? t c) ; Keep shifting centroids until equilibrium
-          ; (recur nil k c g)
-          g
+          (recur l k c g)
         :else g))))
 
 (defn -main
   "Main function for k-means"
   [& args]
-  (let [c (k-means [[1 2] [3 2] [6 3] [1 8] [9 10] [1 4] [56 67] [44 53] [43 54] [43 64] [76 56]] 3)] (println c)))
+  (let [c (k-means [[1 2] [3 2] [6 3] [1 8] [9 10] [1 4] [56 67] [44 53] [43 54] [43 64] [76 56]] 2)] (println c)))

(defn mean
  "Retrieve the mean value of a list"
  [l]
  (float (/ (reduce + l) (count l))))

(defn mean-centroids
  "Calculates the mean for a given centroid"
  [g]
  g)
; (defn centroid)

(defn distance
  "Implements euclidian distance between two vectors"
  ([c1 c2]
    (->> (map - c1 c2) (map #(* % %)) (reduce +)))) ; This is a better implementation for when this gets parallelised

(defn min-index
  [c]
  (.indexOf c (apply min c)))

  [l]
  (map distance l))

(defn k-means
  "Perform the actual k-means"
  ([l k]
