diff --git a/microdroid/keymint/service.cpp b/microdroid/keymint/service.cpp
index 8467b33..2cdad0f 100644
--- a/microdroid/keymint/service.cpp
+++ b/microdroid/keymint/service.cpp
@@ -27,35 +27,19 @@
 using aidl::android::hardware::security::keymint::MicrodroidKeyMintDevice;
 using aidl::android::hardware::security::keymint::SecurityLevel;
 
-template <typename T, class... Args>
-std::shared_ptr<T> addService(Args&&... args) {
-    std::shared_ptr<T> ser = ndk::SharedRefBase::make<T>(std::forward<Args>(args)...);
-    auto instanceName = std::string(T::descriptor) + "/default";
-    LOG(INFO) << "adding keymint service instance: " << instanceName;
-    binder_status_t status =
-            AServiceManager_addService(ser->asBinder().get(), instanceName.c_str());
-    CHECK(status == STATUS_OK);
-    return ser;
-}
-
 int main() {
-    // Zero threads seems like a useless pool, but below we'll join this thread to it, increasing
-    // the pool size to 1.
+    // Zero threads seems like a useless pool, but below we'll join this thread
+    // to it, increasing the pool size to 1.
     ABinderProcess_setThreadPoolMaxThreadCount(0);
+
     // Add Keymint Service
     std::shared_ptr<MicrodroidKeyMintDevice> keyMint =
-            addService<MicrodroidKeyMintDevice>(SecurityLevel::SOFTWARE);
-
-    // VMs cannot implement the Secure Clock Service
-    // addService<AndroidSecureClock>(keyMint);
-
-    // VMs don't need to implement the Shared Secret Service as the host
-    // facilities the establishment of the shared secret.
-    // addService<AndroidSharedSecret>(keyMint);
-
-    // VMs don't implement the Remotely Provisioned Component Service as the
-    // host facilities provisioning.
-    // addService<AndroidRemotelyProvisionedComponentDevice>(keyMint);
+            ndk::SharedRefBase::make<MicrodroidKeyMintDevice>(SecurityLevel::SOFTWARE);
+    auto instanceName = std::string(MicrodroidKeyMintDevice::descriptor) + "/default";
+    LOG(INFO) << "adding keymint service instance: " << instanceName;
+    binder_status_t status =
+            AServiceManager_addService(keyMint->asBinder().get(), instanceName.c_str());
+    CHECK(status == STATUS_OK);
 
     ABinderProcess_joinThreadPool();
     return EXIT_FAILURE; // should not reach
