Compile and install a libnotmuch library. Make "notmuch setup" not index all messages, but only what it can do in a reasonable amount of time, (then add "notmuch index" so the user can complete the job when convenient). Fix to use the *last* Message-ID header if multiple such headers are encountered, (I noticed this is one thing that kept me from seeing the same message-ID values as sup). Add support for the user to specify custom headers to be indexed. Add support for automatic tagging of new messages based on particular search criteria, (likely using an InMemory database for the new messages). Fix notmuch.c to call add_timestamp/get_timestampt with path names relative to the database path. (Otherwise, moving the database to a new directory will result in notmuch creating new timestamp documents and leaving stale ones behind.) Fix notmuch.c to use a DIR prefix for directory timestamps, (the idea being that it can then add other non-directory timestamps such as for noting how far back in the past mail has been indexed, and whether it needs to re-tag messages based on a theoretical "auto-tags" configuration file). Audit everything for dealing with out-of-memory (and drop xutil.c). Write a test suite. Achieve 100% test coverage with the test suite.