There have been two rounds of RFC/WIP id:1463927339-5441-1-git-send-email-david@tethera.net id:1464608999-14774-1-git-send-email-david@tethera.net This is the first feature complete version, and (compared to the previous one) includes docs, more tests, and dump/restore support. There is one notable API change: I added a convenience function to remove all tags. More importantly I adjusted the memory semantics of the iterators so that the underlying map objects are kept alive. This is the same issue alread present in the tag iterator code; when the message metadata cache is invalidated, we don't want the iterator to start segfaulting, otherwise the iterators are effectively read-only.