To note for posterity (we discussed this verbally as well), the diamond inheritance problem doesn't occur with virtual inheritance. See [here](http://stackoverflow.com/questions/21558/in-c-what-is-a-virtual-base-class)