uhm.. I find map/reduce way harder to understand (reduce is a very complex concept)... also what is `invert`?