bruns added a comment.
The UDisksDeviceBackend class serves two functions: - shared data cache for UDisksDevice instances - static factory of instances The manager has everything it needs to function as a factory. The UDisksDeviceBackend would become a representation of the individual UDisks Objects, and would store the interfaces and associated properties. The manager does no store interfaces or properties directly, but only objects, i.e. `QMap<QString, UDiskDeviceBackend*> m_cache; m_cache[udi] = new UDisksDeviceBackend(interfaces_and_properties); The manager would also act as a dispatcher, demarshaling the DBus messages, and then e.g. calling on propertiesChanged `m_cache[udi]->propertiesChanged(QStringList invalidated, QVariantMap changed)` As the backend is a shared instance I don't think it can be merged with the device. REPOSITORY R245 Solid REVISION DETAIL https://phabricator.kde.org/D19677 To: broulik, #frameworks, bruns Cc: apol, nicolasfella, kde-frameworks-devel, michaelh, ngraham, bruns