Yes. The issue would be that the cache would become stale and incorrect if nothing is updating it from contactUpdate/contactRemoved signals. I think the right solution would be something like `QSharedPointer<ContactCache>`, with that type also responsible for updating the cache - and that might tie into my ideas for eventually getting rid of ContactListener.

It's definitely a low-hanging fruit, but I favor not making that change immediately. This isn't a significant regression from the old contactCache, which was per EventModel instance.