improved algorithm for mapping/unmapping