diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index d8929259e..4344264dc 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -252,15 +252,6 @@ public:
         return DynamicObjectCast<T>(GetGeneric(handle));
     }
 
-    /**
-     * Looks up a handle while verifying that it is an object that a thread can wait on
-     * @return Pointer to the looked-up object, or `nullptr` if the handle is not valid or it is
-     *         not a waitable object.
-     */
-    SharedPtr<WaitObject> GetWaitObject(Handle handle) const {
-        return DynamicObjectCast<WaitObject>(GetGeneric(handle));
-    }
-
     /// Closes all handles held in this table.
     void Clear();
 
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index 30230d65a..243c54c6e 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -244,7 +244,7 @@ static ResultCode CloseHandle(Kernel::Handle handle) {
 
 /// Wait for a handle to synchronize, timeout after the specified nanoseconds
 static ResultCode WaitSynchronization1(Kernel::Handle handle, s64 nano_seconds) {
-    auto object = Kernel::g_handle_table.GetWaitObject(handle);
+    auto object = Kernel::g_handle_table.Get<Kernel::WaitObject>(handle);
     Kernel::Thread* thread = Kernel::GetCurrentThread();
 
     if (object == nullptr)
@@ -299,7 +299,7 @@ static ResultCode WaitSynchronizationN(s32* out, Kernel::Handle* handles, s32 ha
     std::vector<ObjectPtr> objects(handle_count);
 
     for (int i = 0; i < handle_count; ++i) {
-        auto object = Kernel::g_handle_table.GetWaitObject(handles[i]);
+        auto object = Kernel::g_handle_table.Get<Kernel::WaitObject>(handles[i]);
         if (object == nullptr)
             return ERR_INVALID_HANDLE;
         objects[i] = object;