The major components of the daemon are thus a D-Bus apaptor, a google-lpa Lpa instance, and data transport classes for communicating with different eUICCs, SM-DP+s, and SM-DSs, labeled respectively as EuiccCard, Smdp, and Smds. When a user triggers an LPA method from the UI, a method call is sent to the D-Bus object exposed by the Hermes daemon. This D-Bus method call is then converted by the D-Bus adaptor into a suitable call or set of calls on the Lpa instance. The Lpa instance sends and receives messages to the eUICC, SM-DP+, and SM-DS as necessary to achieve the desired result, using the corresponding EuiccCard, Smdp, and Smds instances for data transport. As there are potentially multiple data transport classes for a particular entity (e.g. a class for communicating with eUICCs by using the UIM QMI service over QRTR vs a class for communicating with eUICCs by using the MBIM protocol over USB), Hermes provides the Lpa instance with the proper transport classes on startup. Finally, the Lpa method responses are converted into a D-Bus method response and are sent back to the UI code.