diff --git a/client_library/client_dbus.cc b/client_library/client_dbus.cc
index 7ca6307..3ffb088 100644
--- a/client_library/client_dbus.cc
+++ b/client_library/client_dbus.cc
@@ -19,8 +19,8 @@
 #include <base/message_loop/message_loop.h>
 
 #include <dbus/bus.h>
+#include <dlcservice/proto_bindings/dlcservice.pb.h>
 #include <update_engine/dbus-constants.h>
-#include <update_engine/proto_bindings/update_engine.pb.h>
 
 #include "update_engine/update_status_utils.h"
 
@@ -57,14 +57,15 @@
       nullptr);
 }
 
-bool DBusUpdateEngineClient::AttemptInstall(
-    const string& omaha_url, const vector<string>& dlc_module_ids) {
+bool DBusUpdateEngineClient::AttemptInstall(const string& omaha_url,
+                                            const vector<string>& dlc_ids) {
   // Convert parameters into protobuf.
-  chromeos_update_engine::DlcParameters dlc_parameters;
+  dlcservice::DlcModuleList dlc_parameters;
   dlc_parameters.set_omaha_url(omaha_url);
-  for (const auto& dlc_module_id : dlc_module_ids) {
-    chromeos_update_engine::DlcInfo* dlc_info = dlc_parameters.add_dlc_infos();
-    dlc_info->set_dlc_id(dlc_module_id);
+  for (const auto& dlc_id : dlc_ids) {
+    dlcservice::DlcModuleInfo* dlc_module_info =
+        dlc_parameters.add_dlc_module_infos();
+    dlc_module_info->set_dlc_id(dlc_id);
   }
   string dlc_request;
   if (dlc_parameters.SerializeToString(&dlc_request)) {
diff --git a/dbus_service.cc b/dbus_service.cc
index 7296053..2a5662f 100644
--- a/dbus_service.cc
+++ b/dbus_service.cc
@@ -19,8 +19,8 @@
 #include <string>
 #include <vector>
 
+#include <dlcservice/proto_bindings/dlcservice.pb.h>
 #include <update_engine/dbus-constants.h>
-#include <update_engine/proto_bindings/update_engine.pb.h>
 
 #include "update_engine/dbus_connection.h"
 #include "update_engine/update_status_utils.h"
@@ -65,24 +65,23 @@
 bool DBusUpdateEngineService::AttemptInstall(ErrorPtr* error,
                                              const string& dlc_request) {
   // Parse the raw parameters into protobuf.
-  DlcParameters dlc_parameters;
+  dlcservice::DlcModuleList dlc_parameters;
   if (!dlc_parameters.ParseFromString(dlc_request)) {
     *error = brillo::Error::Create(
         FROM_HERE, "update_engine", "INTERNAL", "parameters are invalid.");
     return false;
   }
   // Extract fields from the protobuf.
-  vector<string> dlc_module_ids;
-  for (const auto& dlc_info : dlc_parameters.dlc_infos()) {
-    if (dlc_info.dlc_id().empty()) {
+  vector<string> dlc_ids;
+  for (const auto& dlc_module_info : dlc_parameters.dlc_module_infos()) {
+    if (dlc_module_info.dlc_id().empty()) {
       *error = brillo::Error::Create(
           FROM_HERE, "update_engine", "INTERNAL", "parameters are invalid.");
       return false;
     }
-    dlc_module_ids.push_back(dlc_info.dlc_id());
+    dlc_ids.push_back(dlc_module_info.dlc_id());
   }
-  return common_->AttemptInstall(
-      error, dlc_parameters.omaha_url(), dlc_module_ids);
+  return common_->AttemptInstall(error, dlc_parameters.omaha_url(), dlc_ids);
 }
 
 bool DBusUpdateEngineService::AttemptRollback(ErrorPtr* error,
