add `map` & `reduce`