add experimental map function