WIP: better map()