diff --git a/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp b/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
index b557dca..dd2babe 100644
--- a/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
+++ b/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
@@ -18,8 +18,7 @@
     wpa_global_ = global;
 }
 
-ndk::ScopedAStatus MainlineSupplicant::addUsdInterface(const std::string& ifaceName,
-        std::shared_ptr<IUsdInterface>* _aidl_return) {
+ndk::ScopedAStatus MainlineSupplicant::addUsdInterface(const std::string& ifaceName) {
     if (ifaceName.empty()) {
         wpa_printf(MSG_ERROR, "Empty iface name provided");
         return createStatus(SupplicantStatusCode::FAILURE_ARGS_INVALID);
@@ -27,8 +26,6 @@
 
     if (active_usd_ifaces_.find(ifaceName) != active_usd_ifaces_.end()) {
         wpa_printf(MSG_INFO, "Interface %s already exists", ifaceName.c_str());
-        std::shared_ptr<IUsdInterface> usdIface = active_usd_ifaces_[ifaceName];
-        _aidl_return = &usdIface;
         return ndk::ScopedAStatus::ok();
     }
 
@@ -49,12 +46,8 @@
         return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN);
     }
 
-    std::shared_ptr<IUsdInterface> usdIface =
-        ndk::SharedRefBase::make<UsdIface>(wpa_global_, ifaceName);
-    active_usd_ifaces_[ifaceName] = usdIface;
-    _aidl_return = &usdIface;
-
     wpa_printf(MSG_INFO, "Interface %s was added successfully", ifaceName.c_str());
+    active_usd_ifaces_.insert(ifaceName);
     return ndk::ScopedAStatus::ok();
 }
 
diff --git a/wpa_supplicant/aidl/mainline/mainline_supplicant.h b/wpa_supplicant/aidl/mainline/mainline_supplicant.h
index d37d099..38a355f 100644
--- a/wpa_supplicant/aidl/mainline/mainline_supplicant.h
+++ b/wpa_supplicant/aidl/mainline/mainline_supplicant.h
@@ -9,12 +9,9 @@
 #ifndef MAINLINE_SUPPLICANT_IMPL_H
 #define MAINLINE_SUPPLICANT_IMPL_H
 
-#include <map>
-
-#include "usd_iface.h"
+#include <set>
 
 #include <aidl/android/system/wifi/mainline_supplicant/BnMainlineSupplicant.h>
-#include <aidl/android/system/wifi/mainline_supplicant/IUsdInterface.h>
 #include <aidl/android/system/wifi/mainline_supplicant/SupplicantStatusCode.h>
 
 extern "C"
@@ -27,22 +24,20 @@
 }
 
 using ::aidl::android::system::wifi::mainline_supplicant::BnMainlineSupplicant;
-using ::aidl::android::system::wifi::mainline_supplicant::IUsdInterface;
 using ::aidl::android::system::wifi::mainline_supplicant::SupplicantStatusCode;
 
 class MainlineSupplicant : public BnMainlineSupplicant {
     public:
         MainlineSupplicant(struct wpa_global* global);
-        ndk::ScopedAStatus addUsdInterface(const std::string& ifaceName,
-            std::shared_ptr<IUsdInterface>* _aidl_return);
+        ndk::ScopedAStatus addUsdInterface(const std::string& ifaceName);
         ndk::ScopedAStatus removeUsdInterface(const std::string& ifaceName);
         ndk::ScopedAStatus terminate();
 
     private:
         // Raw pointer to the global structure maintained by the core
         struct wpa_global* wpa_global_;
-        // Map containing all active USD interfaces, mapped by iface name -> object
-        std::map<std::string, std::shared_ptr<IUsdInterface>> active_usd_ifaces_;
+        // Names of all active USD interfaces
+        std::set<std::string> active_usd_ifaces_;
 };
 
 #endif  // MAINLINE_SUPPLICANT_IMPL_H
