diff --git a/transport/HidlPassthroughSupport.cpp b/transport/HidlPassthroughSupport.cpp
index 981a139..3a7f6dc 100644
--- a/transport/HidlPassthroughSupport.cpp
+++ b/transport/HidlPassthroughSupport.cpp
@@ -16,8 +16,8 @@
 #include <hidl/HidlPassthroughSupport.h>
 
 #include <hidl/HidlSupport.h>
-#include <hidl/Static.h>
 #include <hidl/HidlTransportUtils.h>
+#include <hidl/Static.h>
 
 namespace android {
 namespace hardware {
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index feef01f..d425591 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -26,7 +26,6 @@
 
 #include <hidl/HidlBinderSupport.h>
 #include <hidl/ServiceManagement.h>
-#include <hidl/Static.h>
 #include <hidl/Status.h>
 
 #include <android-base/logging.h>
@@ -51,29 +50,34 @@
 namespace android {
 namespace hardware {
 
+namespace details {
+extern Mutex gDefaultServiceManagerLock;
+extern sp<android::hidl::manager::V1_0::IServiceManager> gDefaultServiceManager;
+}  // namespace details
+
 sp<IServiceManager> defaultServiceManager() {
 
     {
-        AutoMutex _l(gDefaultServiceManagerLock);
-        if (gDefaultServiceManager != NULL) {
-            return gDefaultServiceManager;
+        AutoMutex _l(details::gDefaultServiceManagerLock);
+        if (details::gDefaultServiceManager != NULL) {
+            return details::gDefaultServiceManager;
         }
         if (access("/dev/hwbinder", F_OK|R_OK|W_OK) != 0) {
             // HwBinder not available on this device or not accessible to
             // this process.
             return nullptr;
         }
-        while (gDefaultServiceManager == NULL) {
-            gDefaultServiceManager =
+        while (details::gDefaultServiceManager == NULL) {
+            details::gDefaultServiceManager =
                     fromBinder<IServiceManager, BpHwServiceManager, BnHwServiceManager>(
                         ProcessState::self()->getContextObject(NULL));
-            if (gDefaultServiceManager == NULL) {
+            if (details::gDefaultServiceManager == NULL) {
                 sleep(1);
             }
         }
     }
 
-    return gDefaultServiceManager;
+    return details::gDefaultServiceManager;
 }
 
 std::vector<std::string> search(const std::string &path,
diff --git a/transport/Static.cpp b/transport/Static.cpp
index d5b335e..496c8f0 100644
--- a/transport/Static.cpp
+++ b/transport/Static.cpp
@@ -19,8 +19,12 @@
 
 #include <hidl/Static.h>
 
+#include <android/hidl/manager/1.0/IServiceManager.h>
+#include <utils/Mutex.h>
+
 namespace android {
 namespace hardware {
+namespace details {
 
 Mutex gDefaultServiceManagerLock;
 sp<android::hidl::manager::V1_0::IServiceManager> gDefaultServiceManager;
@@ -31,5 +35,6 @@
 ConcurrentMap<std::string, std::function<sp<::android::hidl::base::V1_0::IBase>(void *)>>
         gBsConstructorMap;
 
-}   // namespace hardware
-}   // namespace android
+}  // namespace details
+}  // namespace hardware
+}  // namespace android
diff --git a/transport/include/hidl/HidlBinderSupport.h b/transport/include/hidl/HidlBinderSupport.h
index 8b98021..86ac74c 100644
--- a/transport/include/hidl/HidlBinderSupport.h
+++ b/transport/include/hidl/HidlBinderSupport.h
@@ -328,7 +328,7 @@
             // interfaceDescriptor fails
             return nullptr;
         }
-        auto func = gBnConstructorMap.get(myDescriptor, nullptr);
+        auto func = details::gBnConstructorMap.get(myDescriptor, nullptr);
         if (!func) {
             return nullptr;
         }
diff --git a/transport/include/hidl/Static.h b/transport/include/hidl/Static.h
index 04b1729..e6c9139 100644
--- a/transport/include/hidl/Static.h
+++ b/transport/include/hidl/Static.h
@@ -17,31 +17,29 @@
 // All static variables go here, to control initialization and
 // destruction order in the library.
 
+#include <functional>
+
 #include <android/hidl/base/1.0/IBase.h>
-#include <android/hidl/manager/1.0/IServiceManager.h>
 #include <hidl/ConcurrentMap.h>
 #include <hwbinder/IBinder.h>
 #include <utils/StrongPointer.h>
-#include <utils/Mutex.h>
 
 namespace android {
 namespace hardware {
+namespace details {
 
-// For ServiceManagement.cpp
-extern Mutex gDefaultServiceManagerLock;
-extern sp<android::hidl::manager::V1_0::IServiceManager> gDefaultServiceManager;
-
-// For HidlBinderSupport
+// For HidlBinderSupport and autogenerated code
 // value function receives reinterpret_cast<void *>(static_cast<IFoo *>(foo)),
 // returns sp<IBinder>
 extern ConcurrentMap<std::string,
         std::function<sp<IBinder>(void *)>> gBnConstructorMap;
 
-// For HidlPassthroughSupport
+// For HidlPassthroughSupport and autogenerated code
 // value function receives reinterpret_cast<void *>(static_cast<IFoo *>(foo)),
 // returns sp<IBase>
 extern ConcurrentMap<std::string,
         std::function<sp<::android::hidl::base::V1_0::IBase>(void *)>> gBsConstructorMap;
 
-}   // namespace hardware
-}   // namespace android
+}  // namespace details
+}  // namespace hardware
+}  // namespace android
