map -> map_, to avoid shadowing built-in map() func