prefer mapv over (vec (map ...)) and (doall (map ...))