diff --git a/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp b/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp
index 06d9732..175c43a 100644
--- a/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp
+++ b/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp
@@ -32,66 +32,16 @@
                                           llvm::support::endianness endian) {
   switch(arch) {
   case llvm::ELF::EM_HEXAGON:
-    return std::unique_ptr<KindHandler>(new KindHandler_hexagon());
+    return std::unique_ptr<KindHandler>(new HexagonKindHandler());
   case llvm::ELF::EM_386:
-    return std::unique_ptr<KindHandler>(new KindHandler_x86());
+    return std::unique_ptr<KindHandler>(new X86KindHandler());
   case llvm::ELF::EM_PPC:
-    return std::unique_ptr<KindHandler>(new KindHandler_ppc(endian));
+    return std::unique_ptr<KindHandler>(new PPCKindHandler(endian));
   default:
     llvm_unreachable("arch not supported");
   }
 }
 
-//===----------------------------------------------------------------------===//
-//  KindHandler_x86
-//  TODO: more to do here
-//===----------------------------------------------------------------------===//
-
-KindHandler_x86::~KindHandler_x86() {}
-
-Reference::Kind KindHandler_x86::stringToKind(StringRef str) {
-  return llvm::StringSwitch<Reference::Kind>(str)
-    .Case("none", none)
-    .Default(invalid);
-}
-
-StringRef KindHandler_x86::kindToString(Reference::Kind kind) {
-  switch ( (Kinds)kind ) {
-    case invalid:
-      return "invalid";
-    case none:
-      return "none";
-  }
-  llvm_unreachable("invalid x86 Reference kind");
-}
-
-bool KindHandler_x86::isCallSite(Kind kind) {
-  llvm_unreachable("Unimplemented: KindHandler_x86::isCallSite");
-  return false;
-}
-
-bool KindHandler_x86::isPointer(Kind kind) {
-  llvm_unreachable("Unimplemented: KindHandler_x86::isPointer");
-  return false;
-}
- 
-bool KindHandler_x86::isLazyImmediate(Kind kind) {
-  llvm_unreachable("Unimplemented: KindHandler_x86::isLazyImmediate");
-  return false;
-}
- 
-bool KindHandler_x86::isLazyTarget(Kind kind) {
-  llvm_unreachable("Unimplemented: KindHandler_x86::isLazyTarget");
-  return false;
-}
-
-void KindHandler_x86::applyFixup(int32_t reloc, uint64_t addend,
-                                    uint8_t *location, uint64_t fixupAddress,
-                                    uint64_t targetAddress) {
-// TODO: Add reloc funcs for X86
-  return;
-}
-
 } // namespace elf
 } // namespace lld
 
