diff --git a/update_engine.xml b/update_engine.xml
index 0d9f895..44b7a7c 100644
--- a/update_engine.xml
+++ b/update_engine.xml
@@ -7,6 +7,8 @@
   <interface name="org.chromium.UpdateEngineInterface">
     <annotation name="org.freedesktop.DBus.GLib.CSymbol"
                 value="update_engine_service"/>
+    <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
+                value="update_engine_client"/>
     <method name="AttemptUpdate">
       <arg type="s" name="app_version" />
       <arg type="s" name="omaha_url" />
@@ -36,11 +38,15 @@
     <method name="SetP2PUpdatePermission">
       <annotation name="org.freedesktop.DBus.GLib.CSymbol"
         value="update_engine_service_set_p2p_update_permission"/>
+      <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
+        value="update_engine_client_set_p2p_update_permission"/>
       <arg type="b" name="enabled" />
     </method>
     <method name="GetP2PUpdatePermission">
       <annotation name="org.freedesktop.DBus.GLib.CSymbol"
         value="update_engine_service_get_p2p_update_permission"/>
+      <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
+        value="update_engine_client_get_p2p_update_permission"/>
       <arg type="b" name="enabled" direction="out" />
     </method>
     <method name="SetUpdateOverCellularPermission">
diff --git a/update_engine_client.cc b/update_engine_client.cc
index d904d71..6e3e4f3 100644
--- a/update_engine_client.cc
+++ b/update_engine_client.cc
@@ -110,8 +110,7 @@
 
   CHECK(GetProxy(&proxy));
 
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_reset_status(proxy, &error);
+  gboolean rc = update_engine_client_reset_status(proxy, &error);
   return rc;
 }
 
@@ -130,14 +129,13 @@
   char* new_version = NULL;
   gint64 new_size = 0;
 
-  gboolean rc = org_chromium_UpdateEngineInterface_get_status(
-      proxy,
-      &last_checked_time,
-      &progress,
-      &current_op,
-      &new_version,
-      &new_size,
-      &error);
+  gboolean rc = update_engine_client_get_status(proxy,
+                                                &last_checked_time,
+                                                &progress,
+                                                &current_op,
+                                                &new_version,
+                                                &new_size,
+                                                &error);
   if (rc == FALSE) {
     LOG(INFO) << "Error getting status: " << GetAndFreeGError(&error);
   }
@@ -196,10 +194,9 @@
 
   CHECK(GetProxy(&proxy));
 
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_attempt_rollback(proxy,
-                                                          rollback,
-                                                          &error);
+  gboolean rc = update_engine_client_attempt_rollback(proxy,
+                                                      rollback,
+                                                      &error);
   CHECK_EQ(rc, TRUE) << "Error with rollback request: "
                      << GetAndFreeGError(&error);
   return true;
@@ -211,11 +208,10 @@
 
   CHECK(GetProxy(&proxy));
 
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_attempt_update(proxy,
-                                                        app_version.c_str(),
-                                                        omaha_url.c_str(),
-                                                        &error);
+  gboolean rc = update_engine_client_attempt_update(proxy,
+                                                    app_version.c_str(),
+                                                    omaha_url.c_str(),
+                                                    &error);
   CHECK_EQ(rc, TRUE) << "Error checking for update: "
                      << GetAndFreeGError(&error);
   return true;
@@ -228,7 +224,7 @@
   CHECK(GetProxy(&proxy));
 
   gboolean rc =
-      org_chromium_UpdateEngineInterface_reboot_if_needed(proxy, &error);
+      update_engine_client_reboot_if_needed(proxy, &error);
   // Reboot error code doesn't necessarily mean that a reboot
   // failed. For example, D-Bus may be shutdown before we receive the
   // result.
@@ -242,11 +238,10 @@
 
   CHECK(GetProxy(&proxy));
 
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_set_channel(proxy,
-                                                     target_channel.c_str(),
-                                                     allow_powerwash,
-                                                     &error);
+  gboolean rc = update_engine_client_set_channel(proxy,
+                                                 target_channel.c_str(),
+                                                 allow_powerwash,
+                                                 &error);
   CHECK_EQ(rc, true) << "Error setting the channel: "
                      << GetAndFreeGError(&error);
   LOG(INFO) << "Channel permanently set to: " << target_channel;
@@ -259,11 +254,10 @@
   CHECK(GetProxy(&proxy));
 
   char* channel = NULL;
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_get_channel(proxy,
-                                                     get_current_channel,
-                                                     &channel,
-                                                     &error);
+  gboolean rc = update_engine_client_get_channel(proxy,
+                                                 get_current_channel,
+                                                 &channel,
+                                                 &error);
   CHECK_EQ(rc, true) << "Error getting the channel: "
                      << GetAndFreeGError(&error);
   string output = channel;
@@ -277,11 +271,10 @@
 
   CHECK(GetProxy(&proxy));
 
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_set_update_over_cellular_permission(
-          proxy,
-          allowed,
-          &error);
+  gboolean rc = update_engine_client_set_update_over_cellular_permission(
+      proxy,
+      allowed,
+      &error);
   CHECK_EQ(rc, true) << "Error setting the update over cellular setting: "
                      << GetAndFreeGError(&error);
 }
@@ -293,11 +286,10 @@
   CHECK(GetProxy(&proxy));
 
   gboolean allowed;
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_get_update_over_cellular_permission(
-          proxy,
-          &allowed,
-          &error);
+  gboolean rc = update_engine_client_get_update_over_cellular_permission(
+      proxy,
+      &allowed,
+      &error);
   CHECK_EQ(rc, true) << "Error getting the update over cellular setting: "
                      << GetAndFreeGError(&error);
   return allowed;
@@ -309,11 +301,10 @@
 
   CHECK(GetProxy(&proxy));
 
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_set_p2_pupdate_permission(
-          proxy,
-          enabled,
-          &error);
+  gboolean rc = update_engine_client_set_p2p_update_permission(
+      proxy,
+      enabled,
+      &error);
   CHECK_EQ(rc, true) << "Error setting the peer-to-peer update setting: "
                      << GetAndFreeGError(&error);
 }
@@ -325,11 +316,10 @@
   CHECK(GetProxy(&proxy));
 
   gboolean enabled;
-  gboolean rc =
-      org_chromium_UpdateEngineInterface_get_p2_pupdate_permission(
-          proxy,
-          &enabled,
-          &error);
+  gboolean rc = update_engine_client_get_p2p_update_permission(
+      proxy,
+      &enabled,
+      &error);
   CHECK_EQ(rc, true) << "Error getting the peer-to-peer update setting: "
                      << GetAndFreeGError(&error);
   return enabled;
