diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,9 @@
+## 0.3.0.0
+
+* New maintainer and GitHub location - with many thanks to Bryan O'Sullivan for all of the past work on this module, and for facilitating the transfer of maintenance responsibility.
+* Extra instances of QueryParams for larger tuples.
+* Include fieldName in ResultError in the case of the Incompatible constructor.
+
+The changes to ResultError and QueryParams were previously unreleased,
+although present in the GitHub repository.  They are the reason for the
+major version bump.
diff --git a/Database/MySQL/Simple.hs b/Database/MySQL/Simple.hs
--- a/Database/MySQL/Simple.hs
+++ b/Database/MySQL/Simple.hs
@@ -4,7 +4,7 @@
 -- Module:      Database.MySQL.Simple
 -- Copyright:   (c) 2011 MailRank, Inc.
 -- License:     BSD3
--- Maintainer:  Bryan O'Sullivan <bos@serpentine.com>
+-- Maintainer:  Paul Rouse <pyr@doynton.org>
 -- Stability:   experimental
 -- Portability: portable
 --
diff --git a/Database/MySQL/Simple/Param.hs b/Database/MySQL/Simple/Param.hs
--- a/Database/MySQL/Simple/Param.hs
+++ b/Database/MySQL/Simple/Param.hs
@@ -5,7 +5,7 @@
 -- Module:      Database.MySQL.Simple.Param
 -- Copyright:   (c) 2011 MailRank, Inc.
 -- License:     BSD3
--- Maintainer:  Bryan O'Sullivan <bos@serpentine.com>
+-- Maintainer:  Paul Rouse <pyr@doynton.org>
 -- Stability:   experimental
 -- Portability: portable
 --
diff --git a/Database/MySQL/Simple/QueryParams.hs b/Database/MySQL/Simple/QueryParams.hs
--- a/Database/MySQL/Simple/QueryParams.hs
+++ b/Database/MySQL/Simple/QueryParams.hs
@@ -2,7 +2,7 @@
 -- Module:      Database.MySQL.Simple.QueryParams
 -- Copyright:   (c) 2011 MailRank, Inc.
 -- License:     BSD3
--- Maintainer:  Bryan O'Sullivan <bos@serpentine.com>
+-- Maintainer:  Paul Rouse <pyr@doynton.org>
 -- Stability:   experimental
 -- Portability: portable
 --
@@ -79,6 +79,112 @@
     renderParams (a,b,c,d,e,f,g,h,i,j) =
         [render a, render b, render c, render d, render e, render f, render g,
          render h, render i, render j]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p, Param q)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p, render q]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p, Param q, Param r)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p, render q, render r]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p, Param q, Param r, Param s)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p, render q, render r, render s]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p, Param q, Param r, Param s, Param t, Param u,
+          Param v)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p, render q, render r, render s, render t, render u,
+         render v]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p, Param q, Param r, Param s, Param t, Param u,
+          Param v, Param w)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p, render q, render r, render s, render t, render u,
+         render v, render w]
+
+instance (Param a, Param b, Param c, Param d, Param e, Param f, Param g,
+          Param h, Param i, Param j, Param k, Param l, Param m, Param n,
+          Param o, Param p, Param q, Param r, Param s, Param t, Param u,
+          Param v, Param w, Param x)
+    => QueryParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x) where
+    renderParams (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x) =
+        [render a, render b, render c, render d, render e, render f, render g,
+         render h, render i, render j, render k, render l, render m, render n,
+         render o, render p, render q, render r, render s, render t, render u,
+         render v, render w, render x]
 
 instance (Param a) => QueryParams [a] where
     renderParams = map render
diff --git a/Database/MySQL/Simple/QueryResults.hs b/Database/MySQL/Simple/QueryResults.hs
--- a/Database/MySQL/Simple/QueryResults.hs
+++ b/Database/MySQL/Simple/QueryResults.hs
@@ -4,7 +4,7 @@
 -- Module:      Database.MySQL.Simpe.QueryResults
 -- Copyright:   (c) 2011 MailRank, Inc.
 -- License:     BSD3
--- Maintainer:  Bryan O'Sullivan <bos@serpentine.com>
+-- Maintainer:  Paul Rouse <pyr@doynton.org>
 -- Stability:   experimental
 -- Portability: portable
 --
@@ -218,6 +218,128 @@
               !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
               !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
     convertResults fs vs  = convertError fs vs 15
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp] =
+        (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp;
+    convertResults fs vs  = convertError fs vs 16
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p, Result q) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq] =
+        (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp; !q = convert fq vq;
+    convertResults fs vs  = convertError fs vs 17
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p, Result q, Result r) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq,vr] =
+        (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp; !q = convert fq vq; !r = convert fr vr
+    convertResults fs vs  = convertError fs vs 18
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p, Result q, Result r,
+          Result s) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr,fs]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq,vr,vs]
+        = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp; !q = convert fq vq; !r = convert fr vr
+              !s = convert fs vs;
+    convertResults fs_ vs_  = convertError fs_ vs_ 19
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p, Result q, Result r,
+          Result s, Result t, Result u, Result v) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr,fs,
+                    ft,fu,fv]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq,vr,vs,
+                    vt,vu,vv]
+        = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp; !q = convert fq vq; !r = convert fr vr
+              !s = convert fs vs; !t = convert ft vt; !u = convert fu vu
+              !v = convert fv vv;
+    convertResults fs_ vs_  = convertError fs_ vs_ 22
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p, Result q, Result r,
+          Result s, Result t, Result u, Result v, Result w) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr,fs,
+                    ft,fu,fv,fw]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq,vr,vs,
+                    vt,vu,vv,vw]
+        = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp; !q = convert fq vq; !r = convert fr vr
+              !s = convert fs vs; !t = convert ft vt; !u = convert fu vu
+              !v = convert fv vv; !w = convert fw vw;
+    convertResults fs_ vs_  = convertError fs_ vs_ 23
+
+instance (Result a, Result b, Result c, Result d, Result e, Result f,
+          Result g, Result h, Result i, Result j, Result k, Result l,
+          Result m, Result n, Result o, Result p, Result q, Result r,
+          Result s, Result t, Result u, Result v, Result w, Result x) =>
+    QueryResults (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x) where
+    convertResults [fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr,fs,
+                    ft,fu,fv,fw,fx]
+                   [va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq,vr,vs,
+                    vt,vu,vv,vw,vx]
+        = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x)
+        where !a = convert fa va; !b = convert fb vb; !c = convert fc vc
+              !d = convert fd vd; !e = convert fe ve; !f = convert ff vf
+              !g = convert fg vg; !h = convert fh vh; !i = convert fi vi
+              !j = convert fj vj; !k = convert fk vk; !l = convert fl vl
+              !m = convert fm vm; !n = convert fn vn; !o = convert fo vo
+              !p = convert fp vp; !q = convert fq vq; !r = convert fr vr
+              !s = convert fs vs; !t = convert ft vt; !u = convert fu vu
+              !v = convert fv vv; !w = convert fw vw; !x = convert fx vx;
+    convertResults fs_ vs_  = convertError fs_ vs_ 24
 
 -- | Throw a 'ConversionFailed' exception, indicating a mismatch
 -- between the number of columns in the 'Field' and row, and the
diff --git a/Database/MySQL/Simple/Result.hs b/Database/MySQL/Simple/Result.hs
--- a/Database/MySQL/Simple/Result.hs
+++ b/Database/MySQL/Simple/Result.hs
@@ -1,10 +1,13 @@
 {-# LANGUAGE CPP, DeriveDataTypeable, FlexibleInstances #-}
+#if MIN_VERSION_time(1,5,0)
+{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
+#endif
 
 -- |
--- Module:      Database.MySQL.Simpe.QueryResults
+-- Module:      Database.MySQL.Simple.Result
 -- Copyright:   (c) 2011 MailRank, Inc.
 -- License:     BSD3
--- Maintainer:  Bryan O'Sullivan <bos@serpentine.com>
+-- Maintainer:  Paul Rouse <pyr@doynton.org>
 -- Stability:   experimental
 -- Portability: portable
 --
@@ -28,7 +31,7 @@
 
 import Control.Applicative ((<$>), (<*>), (<*), pure)
 import Control.Exception (Exception, throw)
-import Data.Attoparsec.Char8 hiding (Result)
+import Data.Attoparsec.ByteString.Char8 hiding (Result)
 import Data.Bits ((.&.), (.|.), shiftL)
 import Data.ByteString (ByteString)
 import Data.Int (Int8, Int16, Int32, Int64)
@@ -58,6 +61,7 @@
 -- value fails.
 data ResultError = Incompatible { errSQLType :: String
                                 , errHaskellType :: String
+                                , errFieldName :: String
                                 , errMessage :: String }
                  -- ^ The SQL and Haskell types are not compatible.
                  | UnexpectedNull { errSQLType :: String
@@ -185,7 +189,7 @@
 isText f = fieldCharSet f /= 63
 
 newtype Compat = Compat Word32
-    
+
 mkCompats :: [Type] -> Compat
 mkCompats = foldl' f (Compat 0) . map mkCompat
   where f (Compat a) (Compat b) = Compat (a .|. b)
@@ -218,7 +222,9 @@
                               (show (typeOf (cvt undefined))) ""
 
 incompatible :: Field -> TypeRep -> String -> a
-incompatible f r = throw . Incompatible (show (fieldType f)) (show r)
+incompatible f r = throw . Incompatible (show (fieldType f))
+                                        (show r)
+                                        (B8.unpack (fieldName f))
 
 conversionFailed :: Field -> String -> String -> a
 conversionFailed f s = throw . ConversionFailed (show (fieldType f)) s
diff --git a/Database/MySQL/Simple/Types.hs b/Database/MySQL/Simple/Types.hs
--- a/Database/MySQL/Simple/Types.hs
+++ b/Database/MySQL/Simple/Types.hs
@@ -4,7 +4,7 @@
 -- Module:      Database.MySQL.Simple.Types
 -- Copyright:   (c) 2011 MailRank, Inc.
 -- License:     BSD3
--- Maintainer:  Bryan O'Sullivan <bos@serpentine.com>
+-- Maintainer:  Paul Rouse <pyr@doynton.org>
 -- Stability:   experimental
 -- Portability: portable
 --
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -24,19 +24,14 @@
 and other improvements.
 
 Please report bugs via the
-[github issue tracker](http://github.com/bos/mysql-simple/issues).
-
-Master [git repository](http://github.com/bos/mysql-simple):
-
-* `git clone git://github.com/bos/mysql-simple.git`
-
-There's also a [Mercurial mirror](http://bitbucket.org/bos/mysql-simple):
+[github issue tracker](http://github.com/paul-rouse/mysql-simple/issues).
 
-* `hg clone http://bitbucket.org/bos/mysql-simple`
+Master [git repository](http://github.com/paul-rouse/mysql-simple):
 
-(You can create and contribute changes using either git or Mercurial.)
+* `git clone git://github.com/paul-rouse/mysql-simple.git`
 
 # Authors
 
-This library is written and maintained by Bryan O'Sullivan,
-<bos@serpentine.com>.
+This library was written by Bryan O'Sullivan, <bos@serpentine.com>,
+to whom all of the credit is due.
+It is now being maintained by Paul Rouse, <pyr@doynton.org>.
diff --git a/mysql-simple.cabal b/mysql-simple.cabal
--- a/mysql-simple.cabal
+++ b/mysql-simple.cabal
@@ -1,7 +1,7 @@
 name:           mysql-simple
-version:        0.2.2.5
-homepage:       https://github.com/bos/mysql-simple
-bug-reports:    https://github.com/bos/mysql-simple/issues
+version:        0.3.0.0
+homepage:       https://github.com/paul-rouse/mysql-simple
+bug-reports:    https://github.com/paul-rouse/mysql-simple/issues
 synopsis:       A mid-level MySQL client library.
 description:    
     A mid-level client library for the MySQL database, intended to be
@@ -17,12 +17,13 @@
 license:        BSD3
 license-file:   LICENSE
 author:         Bryan O'Sullivan <bos@serpentine.com>
-maintainer:     Bryan O'Sullivan <bos@serpentine.com>
+maintainer:     Paul Rouse <pyr@doynton.org>
 copyright:      2011 MailRank, Inc.
 category:       Database
 build-type:     Simple
-cabal-version:  >= 1.6
+cabal-version:  >= 1.8
 extra-source-files:
+    ChangeLog.md
     README.markdown
 
 flag developer
@@ -40,7 +41,7 @@
     Database.MySQL.Simple.Types
 
   build-depends:
-    attoparsec >= 0.8.5.3,
+    attoparsec >= 0.10.0.0,
     base < 5,
     base16-bytestring,
     blaze-builder,
@@ -52,18 +53,23 @@
     text >= 0.11.0.2,
     time
 
-  ghc-options: -Wall
-  if impl(ghc >= 6.8)
-    ghc-options: -fwarn-tabs
+  ghc-options: -Wall -fwarn-tabs
+  if impl(ghc >= 7.10)
+    ghc-options: -fno-warn-unused-imports
   if flag(developer)
     ghc-prof-options: -auto-all
     ghc-options: -Werror
     cpp-options: -DASSERTS
 
-source-repository head
-  type:     git
-  location: http://github.com/bos/mysql-simple
+test-suite test
+    type:            exitcode-stdio-1.0
+    main-is:         main.hs
+    hs-source-dirs:  test
+    ghc-options:     -Wall
+    build-depends:   base                    >= 4 && < 5
+                   , hspec
+                   , mysql-simple
 
 source-repository head
-  type:     mercurial
-  location: http://bitbucket.org/bos/mysql-simple
+  type:     git
+  location: http://github.com/paul-rouse/mysql-simple
diff --git a/test/main.hs b/test/main.hs
new file mode 100644
--- /dev/null
+++ b/test/main.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings          #-}
+
+import Control.Exception     (bracket)
+import Database.MySQL.Simple (ConnectInfo (..), defaultConnectInfo,
+                              connect, close,
+                              query_, Only (..))
+import Test.Hspec
+
+-- This is how to connect to our test database
+testConn :: ConnectInfo
+testConn = defaultConnectInfo {
+               connectHost     = "127.0.0.1",
+               connectUser     = "test",
+               connectDatabase = "test"
+           }
+
+-- Only the most cursory test is done at the moment, simply showing that
+-- things hang together sufficiently well that we can talk to the database
+-- server.
+--
+main :: IO ()
+main = bracket (connect testConn) close $ \conn -> hspec $ do
+    describe "Database" $ do
+      it "seems to be connected" $ do
+        result <- query_ conn "select 1 + 1"
+        result `shouldBe` [Only (2::Int)]
