BTW, I would prefer private inheritance to make sure the callers cannot do things like TorrentPersistentData::value("MyKey"). This way, we make sure they go through methods.