diff --git a/base/HidlSupport.cpp b/base/HidlSupport.cpp
index 91d56e7..547f7e7 100644
--- a/base/HidlSupport.cpp
+++ b/base/HidlSupport.cpp
@@ -77,6 +77,16 @@
             vintf::VintfObject::GetDeviceHalManifest());
 }
 
+namespace details {
+bool debuggable() {
+#ifdef LIBHIDL_TARGET_DEBUGGABLE
+    return true;
+#else
+    return false;
+#endif
+}
+}  // namespace details
+
 hidl_handle::hidl_handle() {
     mHandle = nullptr;
     mOwnsHandle = false;
diff --git a/base/include/hidl/HidlSupport.h b/base/include/hidl/HidlSupport.h
index a16701b..7737011 100644
--- a/base/include/hidl/HidlSupport.h
+++ b/base/include/hidl/HidlSupport.h
@@ -63,6 +63,11 @@
 vintf::Transport getTransport(const std::string &interfaceName,
                               const std::string &instanceName);
 
+namespace details {
+// Return true on userdebug / eng builds and false on user builds.
+bool debuggable();
+} //  namespace details
+
 // hidl_death_recipient is a callback interfaced that can be used with
 // linkToDeath() / unlinkToDeath()
 struct hidl_death_recipient : public virtual RefBase {
diff --git a/manifest.xml b/manifest.xml
index 06b57b6..02cd8a1 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -21,7 +21,7 @@
     </hal>
     <hal>
         <name>android.hidl.memory</name>
-        <transport>passthrough</transport>
+        <transport arch="32+64">passthrough</transport>
         <version>1.0</version>
         <interface>
             <name>IMapper</name>
diff --git a/transport/HidlBinderSupport.cpp b/transport/HidlBinderSupport.cpp
index 30c2323..746c2f9 100644
--- a/transport/HidlBinderSupport.cpp
+++ b/transport/HidlBinderSupport.cpp
@@ -25,10 +25,6 @@
 #include <fstream>
 #include <sstream>
 
-#ifdef LIBHIDL_TARGET_DEBUGGABLE
-#include <android-base/logging.h>
-#endif
-
 namespace android {
 namespace hardware {
 
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index a1e570f..15abb92 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -186,8 +186,7 @@
         return nullptr;
     }
 
-    Return<bool> add(const hidl_vec<hidl_string>& /* interfaceChain */,
-                     const hidl_string& /* name */,
+    Return<bool> add(const hidl_string& /* name */,
                      const sp<IBase>& /* service */) override {
         LOG(FATAL) << "Cannot register services with passthrough service manager.";
         return false;
diff --git a/transport/manager/1.0/IServiceManager.hal b/transport/manager/1.0/IServiceManager.hal
index 2bbbe22..77cf253 100644
--- a/transport/manager/1.0/IServiceManager.hal
+++ b/transport/manager/1.0/IServiceManager.hal
@@ -52,23 +52,26 @@
     get(string fqName, string name) generates (interface service);
 
     /**
-     * Register a service. The service manager must be registered as all of the
-     * services that it inherits from.
+     * Register a service. The service manager must retrieve the (inherited)
+     * interfaces that this service implements, and register them along with
+     * the service.
+     *
+     * Each interface must have its own namespace for instance names. If you
+     * have two unrelated interfaces IFoo and IBar, it must be valid to call:
+     *
+     * add("my_instance", foo); // foo implements IFoo
+     * add("my_instance", bar); // bar implements IBar
      *
      * WARNING: This function is for libhidl/HwBinder use only. You are likely
      * looking for 'INTERFACE::registerAsService("name")' instead.
      *
-     * @param interfaceChain List of fully-qualified interface names. The first
-     *                       must be the actual interface name. Subsequent names must
-     *                       follow the inheritance hierarchy of the interface.
      * @param name           Instance name. Must also be used to retrieve service.
      * @param service        Handle to registering service.
      *
      * @return success       Whether or not the service was registered.
      *
      */
-    add(vec<string> interfaceChain, string name, interface service)
-        generates (bool success);
+    add(string name, interface service) generates (bool success);
 
     /**
      * List all registered services. Must be sorted.
