diff --git a/CleanSpec.mk b/CleanSpec.mk
index 1ca5183..12538be 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -77,3 +77,9 @@
 $(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.power.stats@1.0-service.gs101)
 $(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power.stats@1.0-service.gs101.rc)
 $(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.power.stats@1.0-service.gs101.xml)
+
+# Keymaster to KeyMint
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.keymaster@4.0-service.trusty)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/init/android.hardware.keymaster@4.0-service.trusty.rc)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.keymaster@4.0-service.trusty.xml)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/wait_for_strongbox)
diff --git a/keymaster/Android.bp b/keymaster/Android.bp
deleted file mode 100644
index 99aa4b4..0000000
--- a/keymaster/Android.bp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// Copyright (C) 2018 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 {
-    // See: http://go/android-license-faq
-    // A large-scale-change added 'default_applicable_licenses' to import
-    // all of the 'license_kinds' from "//device/google/gs101:device_google_gs101_license"
-    // to get the below license kinds:
-    //   SPDX-license-identifier-Apache-2.0
-    default_applicable_licenses: [
-        "//device/google/gs101:device_google_gs101_license",
-    ],
-}
-
-cc_binary {
-    name: "wait_for_strongbox",
-    init_rc: ["wait_for_strongbox.rc"],
-    relative_install_path: "hw",
-    srcs: [ "wait_for_strongbox.cpp" ],
-    cflags: [ "-Werror", "-Wall" ],
-    shared_libs: [
-        "android.hardware.keymaster@4.0",
-        "libbase",
-        "libkeymaster4_1support",
-        "libutils",
-    ],
-    proprietary: true,
-}
diff --git a/keymaster/wait_for_strongbox.cpp b/keymaster/wait_for_strongbox.cpp
deleted file mode 100644
index c0f4094..0000000
--- a/keymaster/wait_for_strongbox.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- ** Copyright 2018, 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 <unistd.h>
-
-#define LOG_TAG "wait_for_strongbox"
-#include <android-base/logging.h>
-
-#include <keymasterV4_1/Keymaster.h>
-
-using android::hardware::keymaster::V4_1::SecurityLevel;
-using android::hardware::keymaster::V4_1::support::Keymaster;
-
-useconds_t kWaitTimeMicroseconds = 1 * 1000;  // 1 milliseconds
-
-int main() {
-    for (unsigned cycleCount = 0; /* Forever */; ++cycleCount) {
-        auto keymasters = Keymaster::enumerateAvailableDevices();
-
-        bool foundStrongBox = false;
-        bool foundTee = false;
-        for (auto &dev : keymasters) {
-            SecurityLevel securityLevel = dev->halVersion().securityLevel;
-            uint8_t majorVersion = dev->halVersion().majorVersion;
-            if (securityLevel == SecurityLevel::STRONGBOX && majorVersion == 4) {
-                foundStrongBox = true;
-            }
-            if (securityLevel == SecurityLevel::TRUSTED_ENVIRONMENT && majorVersion == 4) {
-                foundTee = true;
-            }
-        }
-
-        if (foundTee && foundStrongBox) {
-            return 0;
-        }
-        if (cycleCount % 10 == 1) {
-            if (!foundStrongBox) {
-                LOG(WARNING) << "Still waiting for StrongBox Keymaster";
-            }
-            if (!foundTee) {
-                LOG(WARNING) << "Still waiting for TEE Keymaster";
-            }
-        }
-        usleep(kWaitTimeMicroseconds);
-    }
-}
diff --git a/keymaster/wait_for_strongbox.rc b/keymaster/wait_for_strongbox.rc
deleted file mode 100644
index c02fc46..0000000
--- a/keymaster/wait_for_strongbox.rc
+++ /dev/null
@@ -1,9 +0,0 @@
-# Wait for both Trusty and Strongbox HALs to be up
-service wait_for_strongbox /vendor/bin/hw/wait_for_strongbox
-    user root
-    group root system
-    priority -20
-    ioprio rt 0
-
-on late-fs
-    exec_start wait_for_strongbox
