diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for vformat
 
+## V0.14.1
+- Fix `FromArgKey` overlapping bug
+- Fix `template-haskell` version issue
+
 ## V0.14.0
 - Add `QuasiQuoter`s for `Format` and `Format1`
 
diff --git a/src/Text/Format/Class.hs b/src/Text/Format/Class.hs
--- a/src/Text/Format/Class.hs
+++ b/src/Text/Format/Class.hs
@@ -220,13 +220,13 @@
 class FromArgKey a where
   fromArgKey :: ArgKey -> Maybe a
 
-instance FromArgKey String where
-  fromArgKey (Name k) = Just k
-  fromArgKey _        = Nothing
-
 instance Integral k => FromArgKey k where
   fromArgKey (Index i) = Just $ toEnum i
   fromArgKey _         = Nothing
+
+instance {-# OVERLAPPING #-} FromArgKey String where
+  fromArgKey (Name k) = Just k
+  fromArgKey _        = Nothing
 
 
 --------------------------------------------------------------------------------
diff --git a/vformat.cabal b/vformat.cabal
--- a/vformat.cabal
+++ b/vformat.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 81b8aa366e7778096840d2ebe95e156e87ba58b0430ef7e01c19011083c4351e
+-- hash: 3f62668add44b6aa44d5783744ad02e182d70436125b61053b83178a577511f2
 
 name:           vformat
-version:        0.14.0.0
+version:        0.14.1.0
 synopsis:       A Python str.format() like formatter
 description:    Please see the http://hackage.haskell.org/package/vformat
 category:       Text, Format
@@ -43,7 +43,7 @@
       base >=4.7 && <5
     , containers >=0.5.9 && <1.0
     , exceptions >=0.8 && <1.0
-    , template-haskell >=2.12 && <3.0
+    , template-haskell >=2.7 && <3.0
   default-language: Haskell2010
 
 test-suite vformat-test
@@ -60,6 +60,6 @@
     , containers >=0.5.9 && <1.0
     , exceptions >=0.8 && <1.0
     , hspec >=2.1 && <3.0
-    , template-haskell >=2.12 && <3.0
+    , template-haskell >=2.7 && <3.0
     , vformat
   default-language: Haskell2010
