diff --git a/chromeos-dbus-bindings/adaptor_generator.h b/chromeos-dbus-bindings/adaptor_generator.h
index 84adec7..87e1b26 100644
--- a/chromeos-dbus-bindings/adaptor_generator.h
+++ b/chromeos-dbus-bindings/adaptor_generator.h
@@ -26,20 +26,34 @@
 
 class AdaptorGenerator : public HeaderGenerator {
  public:
-  static bool GenerateAdaptor(const Interface& interface,
-                              const base::FilePath& output_file);
+  static bool GenerateAdaptors(const std::vector<Interface>& interfaces,
+                               const base::FilePath& output_file);
 
  private:
   friend class AdaptorGeneratorTest;
 
+  // Generates one interface adaptor.
+  static void GenerateInterfaceAdaptor(const Interface& interface,
+                                       IndentedText *text);
+
+  // Generates the method prototypes for an interface declaration.
+  static void AddInterfaceMethods(const Interface& interface,
+                                  IndentedText *text);
+
   // Generates the constructor for the adaptor.
-  static void AddConstructor(const Interface& interface,
-                             const std::string& class_name,
+  static void AddConstructor(const std::string& class_name,
+                             const std::string& itf_name,
                              IndentedText *text);
 
-  // Generates the method interface class.
-  static void AddMethodInterface(const Interface& interface,
-                                 IndentedText *text);
+  // Generates RegisterWithDBusObject() method.
+  static void AddRegisterWithDBusObject(const std::string& itf_name,
+                                        const Interface& interface,
+                                        IndentedText *text);
+
+  // Generates the code to register the interface with a D-Bus object.
+  static void RegisterInterface(const std::string& itf_name,
+                                const Interface& interface,
+                                IndentedText *text);
 
   // Generates adaptor methods to send the signals.
   static void AddSendSignalMethods(const Interface& interface,
@@ -50,8 +64,8 @@
                                    IndentedText *text);
 
   // Generates adaptor accessor methods for the properties.
-  static void AddPropertyMethods(const Interface& interface,
-                                 IndentedText *text);
+  static void AddPropertyMethodImplementation(const Interface& interface,
+                                              IndentedText *text);
 
   // Generate ExportProperty data members for the properties.
   static void AddPropertyDataMembers(const Interface& interface,
