diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Chris Kahn (c) 2016
+Copyright Chris Kahn (c) 2017
 
 All rights reserved.
 
diff --git a/hasql-generic.cabal b/hasql-generic.cabal
--- a/hasql-generic.cabal
+++ b/hasql-generic.cabal
@@ -1,5 +1,5 @@
 name:                hasql-generic
-version:             0.1.0.4
+version:             0.1.0.5
 synopsis:            Generic encoder and decoder deriving for Hasql
 description:         Please see README.md
 homepage:            https://github.com/chris-kahn/hasql-generic#readme
@@ -7,7 +7,7 @@
 license-file:        LICENSE
 author:              Chris Kahn
 maintainer:          chris@kahn.pro
-copyright:           2016 Chris Kahn
+copyright:           2017 Chris Kahn
 category:            Web
 build-type:          Simple
 -- extra-source-files:
@@ -18,19 +18,19 @@
   exposed-modules:     Hasql.Generic.HasRow
                      , Hasql.Generic.HasParams
   build-depends:       base >= 4.7 && < 5
-                     , aeson >= 0.11 && < 1.1
+                     , aeson >= 0.11 && < 1.3
                      , binary-parser >= 0.5 && < 0.6
                      , bytestring >= 0.10 && < 0.11
                      , containers >= 0.5 && < 0.6
                      , contravariant >= 1.4 && < 1.5
-                     , generics-sop >= 0.2 && < 0.3
-                     , hasql >= 0.19 && < 0.20
-                     , postgresql-binary >= 0.9 && < 0.10
+                     , generics-sop >= 0.2 && < 0.4
+                     , hasql >= 0.19 && < 1.2
+                     , postgresql-binary >= 0.9 && < 0.13
                      , scientific >= 0.3 && < 0.4
                      , text >= 1.2 && < 1.3
-                     , time >= 1.6 && < 1.8
+                     , time >= 1.6 && < 1.9
                      , uuid >= 1.3 && < 1.4
-                     , vector >= 0.11 && < 0.12
+                     , vector >= 0.11 && < 0.13
   default-language:    Haskell2010
 
 source-repository head
diff --git a/src/Hasql/Generic/HasParams.hs b/src/Hasql/Generic/HasParams.hs
--- a/src/Hasql/Generic/HasParams.hs
+++ b/src/Hasql/Generic/HasParams.hs
@@ -1,4 +1,3 @@
---------------------------------------------------------------------------------
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE DefaultSignatures     #-}
 {-# LANGUAGE DeriveGeneric         #-}
@@ -120,7 +119,8 @@
 --------------------------------------------------------------------------------
 -- | Derive a 'HasEValue' for enumeration types
 gEEnumValue :: (Generic a, All (Equal '[]) (Code a)) => NP (K Text) (Code a) -> Value a
-gEEnumValue names = enum $ hcollapse . hzipWith const names . unSOP . from
+gEEnumValue names =
+  enum $ hcollapse . hzipWith const names . unSOP . from
 
 --------------------------------------------------------------------------------
 -- Instances for common data types
@@ -256,3 +256,29 @@
 instance HasEField (Maybe Word64) where
   {-# INLINE mkEField #-}
   mkEField = contramap (fmap fromIntegral) (nullableValue int8)
+
+instance All HasEField [a,b] => HasParams (a,b)
+instance All HasEField [a,b,c] => HasParams (a,b,c)
+instance All HasEField [a,b,c,d] => HasParams (a,b,c,d)
+instance All HasEField [a,b,c,d,e] => HasParams (a,b,c,d,e)
+instance All HasEField [a,b,c,d,e,f] => HasParams (a,b,c,d,e,f)
+instance All HasEField [a,b,c,d,e,f,g] => HasParams (a,b,c,d,e,f,g)
+instance All HasEField [a,b,c,d,e,f,g,h] => HasParams (a,b,c,d,e,f,g,h)
+instance All HasEField [a,b,c,d,e,f,g,h,i] => HasParams (a,b,c,d,e,f,g,h,i)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j] => HasParams (a,b,c,d,e,f,g,h,i,j)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k] => HasParams (a,b,c,d,e,f,g,h,i,j,k)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
+instance All HasEField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z] => HasParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z)
diff --git a/src/Hasql/Generic/HasRow.hs b/src/Hasql/Generic/HasRow.hs
--- a/src/Hasql/Generic/HasRow.hs
+++ b/src/Hasql/Generic/HasRow.hs
@@ -1,4 +1,4 @@
---------------------------------------------------------------------------------
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE DefaultSignatures     #-}
 {-# LANGUAGE FlexibleContexts      #-}
@@ -11,6 +11,7 @@
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE TypeOperators         #-}
 {-# LANGUAGE UndecidableInstances  #-}
+
 module Hasql.Generic.HasRow
     ( HasRow
     , HasDField
@@ -41,7 +42,11 @@
 import           Generics.SOP
 import qualified GHC.Generics               as GHC
 import           Hasql.Decoders
+#if MIN_VERSION_postgresql_binary(0,12,1)
+import qualified PostgreSQL.Binary.Decoding  as Decoder
+#else
 import qualified PostgreSQL.Binary.Decoder  as Decoder
+#endif
 
 --------------------------------------------------------------------------------
 -- |
@@ -260,3 +265,32 @@
 --------------------------------------------------------------------------------
 word8 :: Value Word64
 word8 = custom $ \b -> BinaryParser.run Decoder.int
+
+#define HASROW(T) instance (Code T ~ '[xs], All HasDField xs) => HasRow T
+
+instance HasRow ()
+instance All HasDField [a,b] => HasRow (a,b)
+instance All HasDField [a,b,c] => HasRow (a,b,c)
+instance All HasDField [a,b,c,d] => HasRow (a,b,c,d)
+instance All HasDField [a,b,c,d,e] => HasRow (a,b,c,d,e)
+instance All HasDField [a,b,c,d,e,f] => HasRow (a,b,c,d,e,f)
+instance All HasDField [a,b,c,d,e,f,g] => HasRow (a,b,c,d,e,f,g)
+instance All HasDField [a,b,c,d,e,f,g,h] => HasRow (a,b,c,d,e,f,g,h)
+instance All HasDField [a,b,c,d,e,f,g,h,i] => HasRow (a,b,c,d,e,f,g,h,i)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j] => HasRow (a,b,c,d,e,f,g,h,i,j)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k] => HasRow (a,b,c,d,e,f,g,h,i,j,k)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
+instance All HasDField [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z] => HasRow (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z)
