diff --git a/transport/HidlTransportSupport.cpp b/transport/HidlTransportSupport.cpp
index 311504d..db70438 100644
--- a/transport/HidlTransportSupport.cpp
+++ b/transport/HidlTransportSupport.cpp
@@ -44,9 +44,7 @@
 
 // TODO(b/122472540): only store one data item per object
 template <typename V>
-static void pruneMapLocked(ConcurrentMap<wp<::android::hidl::base::V1_0::IBase>, V>& map) {
-    using ::android::hidl::base::V1_0::IBase;
-
+static void pruneMapLocked(ConcurrentMap<wp<IBase>, V>& map) {
     std::vector<wp<IBase>> toDelete;
     for (const auto& kv : map) {
         if (kv.first.promote() == nullptr) {
@@ -58,8 +56,7 @@
     }
 }
 
-bool setMinSchedulerPolicy(const sp<::android::hidl::base::V1_0::IBase>& service,
-                           int policy, int priority) {
+bool setMinSchedulerPolicy(const sp<IBase>& service, int policy, int priority) {
     if (service->isRemote()) {
         LOG(ERROR) << "Can't set scheduler policy on remote service.";
         return false;
@@ -88,27 +85,16 @@
     // Due to ABI considerations, IBase cannot have a destructor to clean this up.
     // So, because this API is so infrequently used, (expected to be usually only
     // one time for a process, but it can be more), we are cleaning it up here.
-    // TODO(b/37794345): if ever we update the HIDL ABI for launches in an Android
-    // release in the meta-version sense, we should remove this.
     std::unique_lock<std::mutex> lock = details::gServicePrioMap.lock();
-
-    std::vector<wp<IBase>> toDelete;
-    for (const auto& kv : details::gServicePrioMap) {
-        if (kv.first.promote() == nullptr) {
-            toDelete.push_back(kv.first);
-        }
-    }
-    for (const auto& k : toDelete) {
-        details::gServicePrioMap.eraseLocked(k);
-    }
+    pruneMapLocked(details::gServicePrioMap);
     details::gServicePrioMap.setLocked(service, {policy, priority});
 
     return true;
 }
 
-bool setRequestingSid(const sp<::android::hidl::base::V1_0::IBase>& service, bool requesting) {
+bool setRequestingSid(const sp<IBase>& service, bool requesting) {
     if (service->isRemote()) {
-        ALOGE("Can't set requesting sid on remote service.");
+        LOG(ERROR) << "Can't set requesting sid on remote service.";
         return false;
     }
 
diff --git a/transport/base/1.0/Android.bp b/transport/base/1.0/Android.bp
index 00d2f2b..cebb01b 100644
--- a/transport/base/1.0/Android.bp
+++ b/transport/base/1.0/Android.bp
@@ -10,9 +10,6 @@
         "types.hal",
         "IBase.hal",
     ],
-    types: [
-        "DebugInfo",
-    ],
     gen_java: true,
 }
 
diff --git a/transport/include/hidl/HidlTransportSupport.h b/transport/include/hidl/HidlTransportSupport.h
index d29a3e4..a132bfa 100644
--- a/transport/include/hidl/HidlTransportSupport.h
+++ b/transport/include/hidl/HidlTransportSupport.h
@@ -85,14 +85,6 @@
                            int policy, int priority);
 
 /**
- * Returns whether two interfaces represent the same interface. References to interfaces in the same
- * process will always be equivalent. However, in order to compare a service that is a proxy to a
- * different process, its underlying structure may have to be checked.
- */
-bool interfacesEqual(const sp<::android::hidl::base::V1_0::IBase>& left,
-                     const sp<::android::hidl::base::V1_0::IBase>& right);
-
-/**
  * Sets whether or not this object should request security contexts to be populatd for incoming
  * calls (e.g. with getCallingSid).
  *
@@ -104,6 +96,14 @@
  */
 bool setRequestingSid(const sp<::android::hidl::base::V1_0::IBase>& service, bool requesting);
 
+/**
+ * Returns whether two interfaces represent the same interface. References to interfaces in the same
+ * process will always be equivalent. However, in order to compare a service that is a proxy to a
+ * different process, its underlying structure may have to be checked.
+ */
+bool interfacesEqual(const sp<::android::hidl::base::V1_0::IBase>& left,
+                     const sp<::android::hidl::base::V1_0::IBase>& right);
+
 namespace details {
 
 // Return PID on userdebug / eng builds and IServiceManager::PidConstant::NO_PID on user builds.
diff --git a/transport/safe_union/1.0/Android.bp b/transport/safe_union/1.0/Android.bp
index 0b52fe1..88c7d5d 100644
--- a/transport/safe_union/1.0/Android.bp
+++ b/transport/safe_union/1.0/Android.bp
@@ -10,9 +10,6 @@
     srcs: [
         "types.hal",
     ],
-    types: [
-        "Monostate",
-    ],
     gen_java: true,
 }
 
