diff --git a/Android.bp b/Android.bp
index f9b1e96..032a61a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12,14 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-subdirs = [
-    "adapter",
-    "base",           // libhidlbase
-    "libhidlmemory",  // libhidlmemory
-    "minijail",
-    "transport",      // libhidltransport
-]
-
 cc_defaults {
     name: "libhidl-defaults",
     cflags: [
diff --git a/libhidlmemory/Android.bp b/libhidlmemory/Android.bp
index 2135ef3..e854ab5 100644
--- a/libhidlmemory/Android.bp
+++ b/libhidlmemory/Android.bp
@@ -27,20 +27,17 @@
         "libcutils",
         "libhidlbase",
         "libhidltransport",
-        "android.hidl.memory@1.0",
-        "android.hidl.memory.token@1.0",
+        "android.hidl.memory@1.0"
     ],
     local_include_dirs: ["include"],
     export_include_dirs: ["include"],
 
     export_shared_lib_headers: [
         "android.hidl.memory@1.0",
-        "android.hidl.memory.token@1.0",
         "libhidlbase"
     ],
 
     srcs: [
-        "HidlMemoryToken.cpp",
         "mapping.cpp"
     ],
 
diff --git a/libhidlmemory/HidlMemoryToken.cpp b/libhidlmemory/HidlMemoryToken.cpp
deleted file mode 100644
index 3840183..0000000
--- a/libhidlmemory/HidlMemoryToken.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <hidlmemory/HidlMemoryToken.h>
-
-namespace android {
-namespace hardware {
-
-HidlMemoryToken::HidlMemoryToken(sp<HidlMemory> memory) : mMemory(memory) {}
-
-Return<void> HidlMemoryToken::get(get_cb _hidl_cb) {
-    _hidl_cb(*mMemory);
-    return Void();
-}
-
-}  // namespace hardware
-}  // namespace android
diff --git a/libhidlmemory/include/hidlmemory/HidlMemoryToken.h b/libhidlmemory/include/hidlmemory/HidlMemoryToken.h
deleted file mode 100644
index 4020377..0000000
--- a/libhidlmemory/include/hidlmemory/HidlMemoryToken.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef ANDROID_HARDWARE_HIDLMEMORYTOKEN_H
-#define ANDROID_HARDWARE_HIDLMEMORYTOKEN_H
-
-#include <android/hidl/memory/token/1.0/IMemoryToken.h>
-
-namespace android {
-namespace hardware {
-
-class HidlMemoryToken : public virtual ::android::hidl::memory::token::V1_0::IMemoryToken {
-   public:
-    Return<void> get(get_cb _hidl_cb) override;
-
-    HidlMemoryToken(sp<HidlMemory> memory);
-
-   protected:
-    sp<HidlMemory> mMemory;
-};
-
-}  // namespace hardware
-}  // namespace android
-#endif
diff --git a/transport/Android.bp b/transport/Android.bp
index 5963693..b0c40e2 100644
--- a/transport/Android.bp
+++ b/transport/Android.bp
@@ -12,20 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-subdirs = [
-    "allocator/1.0",
-    "allocator/1.0/default",
-    "allocator/1.0/utils",
-    "base/1.0",
-    "manager/1.0",
-    "manager/1.1",
-    "memory/1.0",
-    "memory/1.0/default",
-    "memory/token/1.0",
-    "token/1.0",
-    "token/1.0/utils",
-]
-
 hidl_package_root {
     name: "android.hidl",
     path: "system/libhidl/transport",
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index 04f7290..34e6ea4 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -473,6 +473,18 @@
     }
 
     void onFirstRef() override {
+        // If this process only has one binder thread, and we're calling wait() from
+        // that thread, it will block forever because we hung up the one and only
+        // binder thread on a condition variable that can only be notified by an
+        // incoming binder call.
+        if (ProcessState::self()->getMaxThreads() <= 1 &&
+                IPCThreadState::self()->isLooperThread()) {
+            LOG(WARNING) << "Can't efficiently wait for " << mInterfaceName << "/"
+                         << mInstanceName << ", because we are called from "
+                         << "the only binder thread in this process.";
+            return;
+        }
+
         Return<bool> ret = mSm->registerForNotifications(mInterfaceName, mInstanceName, this);
 
         if (!ret.isOk()) {
diff --git a/transport/memory/token/1.0/Android.bp b/transport/memory/token/1.0/Android.bp
deleted file mode 100644
index 6fc1af6..0000000
--- a/transport/memory/token/1.0/Android.bp
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is autogenerated by hidl-gen -Landroidbp.
-
-hidl_interface {
-    name: "android.hidl.memory.token@1.0",
-    root: "android.hidl",
-    vndk: {
-        enabled: true,
-    },
-    srcs: [
-        "IMemoryToken.hal",
-    ],
-    interfaces: [
-        "android.hidl.base@1.0",
-    ],
-    gen_java: false,
-}
-
diff --git a/transport/memory/token/1.0/IMemoryToken.hal b/transport/memory/token/1.0/IMemoryToken.hal
deleted file mode 100644
index 6507cee..0000000
--- a/transport/memory/token/1.0/IMemoryToken.hal
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.hidl.memory.token@1.0;
-
-/**
- * Interface which composes shared memory
- */
-interface IMemoryToken {
-    /**
-     * The returned instance of memory must always be a reference to the same memory.
-     * @return mem Memory referenced by this token.
-     */
-    get() generates (memory mem);
-};
