diff --git a/client_library/client_dbus.cc b/client_library/client_dbus.cc
index 4ec76c5..5ca519a 100644
--- a/client_library/client_dbus.cc
+++ b/client_library/client_dbus.cc
@@ -21,7 +21,6 @@
 #include <memory>
 
 #include <dbus/bus.h>
-#include <dlcservice/proto_bindings/dlcservice.pb.h>
 #include <update_engine/dbus-constants.h>
 
 #include "update_engine/update_status_utils.h"
@@ -86,16 +85,7 @@
 
 bool DBusUpdateEngineClient::AttemptInstall(const string& omaha_url,
                                             const vector<string>& dlc_ids) {
-  // Convert parameters into protobuf.
-  dlcservice::DlcModuleList dlc_parameters;
-  dlc_parameters.set_omaha_url(omaha_url);
-  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);
-  }
-  return proxy_->AttemptInstall(dlc_parameters,
-                                nullptr /* brillo::ErrorPtr* */);
+  return proxy_->AttemptInstall(omaha_url, dlc_ids, nullptr);
 }
 
 bool DBusUpdateEngineClient::SetDlcActiveValue(bool is_active,
diff --git a/client_library/client_dbus.h b/client_library/client_dbus.h
index 74fcce3..f19555f 100644
--- a/client_library/client_dbus.h
+++ b/client_library/client_dbus.h
@@ -23,7 +23,6 @@
 #include <vector>
 
 #include <base/macros.h>
-#include <dlcservice/proto_bindings/dlcservice.pb.h>
 #include <update_engine/proto_bindings/update_engine.pb.h>
 
 #include "update_engine/client_library/include/update_engine/client.h"
diff --git a/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml b/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml
index 51457e5..ac2f021 100644
--- a/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml
+++ b/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml
@@ -35,12 +35,11 @@
       <arg type="i" name="flags" direction="in" />
     </method>
     <method name="AttemptInstall">
-      <arg type="ay" name="request" direction="in">
+      <arg type="s" name="omaha_url" direction="in" />
+      <arg type="as" name="dlc_ids" direction="in">
         <tp:docstring>
-          The information about DLC modules that needs to be installed.
+          The list of DLC IDs that needs to be installed.
         </tp:docstring>
-        <annotation name="org.chromium.DBus.Argument.ProtobufClass"
-                    value="dlcservice::DlcModuleList"/>
       </arg>
     </method>
     <method name="AttemptRollback">
diff --git a/dbus_service.cc b/dbus_service.cc
index a5fec74..46ac1d1 100644
--- a/dbus_service.cc
+++ b/dbus_service.cc
@@ -19,7 +19,6 @@
 #include <string>
 #include <vector>
 
-#include <dlcservice/proto_bindings/dlcservice.pb.h>
 #include <update_engine/dbus-constants.h>
 
 #include "update_engine/dbus_connection.h"
@@ -30,7 +29,6 @@
 
 using brillo::ErrorPtr;
 using chromeos_update_engine::UpdateEngineService;
-using dlcservice::DlcModuleList;
 using std::string;
 using std::vector;
 using update_engine::Operation;
@@ -82,17 +80,9 @@
 }
 
 bool DBusUpdateEngineService::AttemptInstall(ErrorPtr* error,
-                                             const DlcModuleList& request) {
-  vector<string> dlc_ids;
-  for (const auto& dlc_module_info : request.dlc_module_infos()) {
-    if (dlc_module_info.dlc_id().empty()) {
-      *error = brillo::Error::Create(
-          FROM_HERE, "update_engine", "INTERNAL", "Empty DLC ID passed.");
-      return false;
-    }
-    dlc_ids.push_back(dlc_module_info.dlc_id());
-  }
-  return common_->AttemptInstall(error, request.omaha_url(), dlc_ids);
+                                             const string& in_omaha_url,
+                                             const vector<string>& dlc_ids) {
+  return common_->AttemptInstall(error, in_omaha_url, dlc_ids);
 }
 
 bool DBusUpdateEngineService::AttemptRollback(ErrorPtr* error,
diff --git a/dbus_service.h b/dbus_service.h
index 86f5b93..873909e 100644
--- a/dbus_service.h
+++ b/dbus_service.h
@@ -21,10 +21,10 @@
 
 #include <memory>
 #include <string>
+#include <vector>
 
 #include <base/memory/ref_counted.h>
 #include <brillo/errors/error.h>
-#include <dlcservice/proto_bindings/dlcservice.pb.h>
 #include <update_engine/proto_bindings/update_engine.pb.h>
 
 #include "update_engine/common_service.h"
@@ -52,7 +52,8 @@
                               int32_t in_flags_as_int) override;
 
   bool AttemptInstall(brillo::ErrorPtr* error,
-                      const dlcservice::DlcModuleList& request) override;
+                      const std::string& in_omaha_url,
+                      const std::vector<std::string>& dlc_ids) override;
 
   bool AttemptRollback(brillo::ErrorPtr* error, bool in_powerwash) override;
 
