diff --git a/mssql-simple.cabal b/mssql-simple.cabal
--- a/mssql-simple.cabal
+++ b/mssql-simple.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 0a046467ca847fb66f304b9789fe93c53e9208d32c115d3936e2cc0d25de86fb
+-- hash: 224e204ca93f3a6226da8b17ae3ed62607288d7c8c6a538f9b7a67a87624fb07
 
 name:           mssql-simple
-version:        0.6.0.2
+version:        0.6.0.3
 synopsis:       SQL Server client library implemented in Haskell
 description:    Please see the README on GitHub at <https://github.com/mitsuji/mssql-simple#readme>
 category:       Database
@@ -28,18 +28,6 @@
   location: https://github.com/mitsuji/mssql-simple
 
 library
-  exposed-modules:
-      Database.MSSQLServer.Connection
-      Database.MSSQLServer.Query
-      Database.MSSQLServer.Query.Only
-      Database.MSSQLServer.Query.ResultSet
-      Database.MSSQLServer.Query.Row
-      Database.MSSQLServer.Query.RpcQuerySet
-      Database.MSSQLServer.Query.RpcResponseSet
-      Database.MSSQLServer.Query.Template
-      Database.MSSQLServer.Query.TokenStreamParser
-  other-modules:
-      Paths_mssql_simple
   hs-source-dirs:
       src
   build-depends:
@@ -47,7 +35,7 @@
     , binary
     , bytestring
     , hostname
-    , ms-tds >=0.4 && <0.5
+    , ms-tds ==0.4.*
     , mtl
     , network
     , template-haskell
@@ -55,13 +43,23 @@
     , time
     , tls
     , uuid-types
+  exposed-modules:
+      Database.MSSQLServer.Connection
+      Database.MSSQLServer.Query
+      Database.MSSQLServer.Query.Only
+      Database.MSSQLServer.Query.ResultSet
+      Database.MSSQLServer.Query.Row
+      Database.MSSQLServer.Query.RpcQuerySet
+      Database.MSSQLServer.Query.RpcResponseSet
+      Database.MSSQLServer.Query.Template
+      Database.MSSQLServer.Query.TokenStreamParser
+  other-modules:
+      Paths_mssql_simple
   default-language: Haskell2010
 
 test-suite tds-test
   type: exitcode-stdio-1.0
   main-is: Spec.hs
-  other-modules:
-      Paths_mssql_simple
   hs-source-dirs:
       test
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
@@ -70,7 +68,7 @@
     , binary
     , bytestring
     , hostname
-    , ms-tds >=0.4 && <0.5
+    , ms-tds ==0.4.*
     , mssql-simple
     , mtl
     , network
@@ -79,4 +77,6 @@
     , time
     , tls
     , uuid-types
+  other-modules:
+      Paths_mssql_simple
   default-language: Haskell2010
diff --git a/src/Database/MSSQLServer/Query/Template.hs b/src/Database/MSSQLServer/Query/Template.hs
--- a/src/Database/MSSQLServer/Query/Template.hs
+++ b/src/Database/MSSQLServer/Query/Template.hs
@@ -14,13 +14,12 @@
 import Data.Monoid((<>))
 import Database.Tds.Message
 import Language.Haskell.TH
-import Language.Haskell.TH.Syntax (returnQ)
 import Data.List (foldl')
 
 
 
 rowTupleQ :: Int -> Q Dec
-rowTupleQ n = returnQ $ rowTuple n
+rowTupleQ n = return $ rowTuple n
 
 rowTuple :: Int -> Dec
 rowTuple n =
@@ -67,7 +66,7 @@
 
 
 resultSetTupleQ :: Int -> Q Dec
-resultSetTupleQ n = returnQ $ resultSetTuple n
+resultSetTupleQ n = return $ resultSetTuple n
 
 resultSetTuple :: Int -> Dec
 resultSetTuple n =
@@ -84,6 +83,9 @@
   (AppT (ConT (mkName "ResultSet")) (foldl' (\x i -> AppT x (VarT (mkName ("a" <> show i)))) (TupleT n) [1..n]))
   [ValD (VarP (mkName "resultSetParser"))
     (NormalB (DoE
+#if MIN_VERSION_template_haskell(2,17,0)
+               Nothing
+#endif
                (
                  (flip map [1..n] $ \i ->
                      BindS
@@ -91,7 +93,11 @@
                      (SigE
                       (AppE (VarE (mkName "resultParser")) (if i==n then (ConE 'True) else (ConE 'False)) )
                       (ForallT
+#if MIN_VERSION_template_haskell(2,17,0)
+                        [PlainTV (mkName $ "a" <> show i) SpecifiedSpec]
+#else
                         [PlainTV (mkName $ "a" <> show i)]
+#endif
 #if MIN_VERSION_template_haskell(2,10,0)
                         [AppT (ConT (mkName "Result")) (VarT (mkName $ "a" <> show i))]
 #else
@@ -115,7 +121,7 @@
 
 
 rpcResponseSetTupleQ :: Int -> Q Dec
-rpcResponseSetTupleQ n = returnQ $ rpcResponseSetTuple n
+rpcResponseSetTupleQ n = return $ rpcResponseSetTuple n
 
 rpcResponseSetTuple :: Int -> Dec
 rpcResponseSetTuple n =
@@ -137,6 +143,9 @@
    (foldl' (\x i -> AppT x (AppT (AppT (ConT (mkName "RpcResponse")) (VarT (mkName ("a" <> show i)))) (VarT (mkName ("b" <> show i)) )) ) (TupleT n) [1..n]))
   [ValD (VarP (mkName "rpcResponseSetParser"))
     (NormalB (DoE
+#if MIN_VERSION_template_haskell(2,17,0)
+               Nothing
+#endif
                (
                  (flip map [1..n] $ \i ->
                      BindS
@@ -157,7 +166,7 @@
 
 
 rpcOutputSetTupleQ :: Int -> Q Dec
-rpcOutputSetTupleQ n = returnQ $ rpcOutputSetTuple n
+rpcOutputSetTupleQ n = return $ rpcOutputSetTuple n
 
 rpcOutputSetTuple :: Int -> Dec
 rpcOutputSetTuple n =
@@ -201,7 +210,7 @@
 
 
 rpcResultSetTupleQ :: Int -> Q Dec
-rpcResultSetTupleQ n = returnQ $ rpcResultSetTuple n
+rpcResultSetTupleQ n = return $ rpcResultSetTuple n
 
 rpcResultSetTuple :: Int -> Dec
 rpcResultSetTuple n =
@@ -218,13 +227,20 @@
   (AppT (ConT (mkName "RpcResultSet")) (foldl' (\x i -> AppT x (VarT (mkName ("a" <> show i)))) (TupleT n) [1..n]))
   [ValD (VarP (mkName "rpcResultSetParser"))
     (NormalB (DoE
+#if MIN_VERSION_template_haskell(2,17,0)
+               Nothing
+#endif
                (
                  (flip map [1..n] $ \i ->
                      BindS
                      (BangP (VarP (mkName $ "r" <> show i )))
                      (SigE (VarE (mkName "rpcResultParser"))
                       (ForallT
+#if MIN_VERSION_template_haskell(2,17,0)
+                        [PlainTV (mkName $ "a" <> show i) SpecifiedSpec]
+#else
                         [PlainTV (mkName $ "a" <> show i)]
+#endif
 #if MIN_VERSION_template_haskell(2,10,0)
                         [AppT (ConT (mkName "RpcResult")) (VarT (mkName $ "a" <> show i))]
 #else
@@ -248,7 +264,7 @@
 
 
 rpcQuerySetTupleQ :: Int -> Q Dec
-rpcQuerySetTupleQ n = returnQ $ rpcQuerySetTuple n
+rpcQuerySetTupleQ n = return $ rpcQuerySetTuple n
 
 rpcQuerySetTuple :: Int -> Dec
 rpcQuerySetTuple n =
@@ -285,7 +301,7 @@
 
 
 rpcParamSetTupleQ :: Int -> Q Dec
-rpcParamSetTupleQ n = returnQ $ rpcParamSetTuple n
+rpcParamSetTupleQ n = return $ rpcParamSetTuple n
 
 rpcParamSetTuple :: Int -> Dec
 rpcParamSetTuple n =
