The above code does not really feel like it is clojure, as it is updating mutable state.  I would rather have see us do something like a group-by.