I would prefer a slightly more general API, one which will also work once (if) we cache more than just contacts. Proposal: void RemovePeerData(string uid, list of strings) Removes cached data of the given peer. In contrast to RemovePeer(), the configuration of the peer and is left unchanged. As in RemovePeer(), its address book is automatically deactivated in the unified address book if was active before removing it. An empty list removes all data. "contacts" removes only the address book. Okay? That call would try to completely remove the EDS database file. It might fail if the database is in use (not sure whether EDS then fails to remove or the other users fail). I was also considering a PurgePeer() call instead, which would have only removed the contacts inside the database. The advantage would be that it is less intrusive if there are other users of the DB (sync, windowed search). The disadvantage is that it is less thorough. Which one do you prefer?