generalize mapper