Discovered I was using smart pointers incorrectly. "Where did all these memory leaks come from?" - Doh!
Added interfaces for common entity methods.