(defn modes [coll]
  (let [distrib (frequencies coll)
        [value freq] [first second] 
        sorted (sort-by (comp - freq) distrib)
        maxfq (freq (first sorted))]
    (map value (take-while #(= maxfq (freq %)) sorted))))