you've re-implemented `map`