use fancier map function