i am really worried about the performance of unApply lookup, since it will walk all the map every time is called. it is not a blocker for this PR, but it is worth putting a comment about it  and fix it ASAP. 