much cleaner implementation of expiration using underlying CHM compute() methods