This change seems strange. lists:unzip/1 is neither implemented as a BIF nor does it get inlined, and it builds two lists instead of one. The main difference from the original fetch_keys is that it creates the lists in reverse and reverses them at the end. I didn't see any measurements for this function in your pull request. Is it really faster? In any case, it should produce quite a lot of unnecessary garbage cons cells: once for the reverse key list, once for the unused lists of values and once again for the reversed value list.