diff --git a/Database/RethinkDB/ReQL.hs b/Database/RethinkDB/ReQL.hs
--- a/Database/RethinkDB/ReQL.hs
+++ b/Database/RethinkDB/ReQL.hs
@@ -1,8 +1,15 @@
 {-# LANGUAGE ExistentialQuantification, RecordWildCards,
              ScopedTypeVariables, FlexibleInstances,
-             OverloadedStrings, PatternGuards, GADTs, 
+             OverloadedStrings, PatternGuards, GADTs,
              EmptyDataDecls, DefaultSignatures, CPP #-}
 
+#if __GLASGOW_HASKELL__ < 710
+{-# LANGUAGE OverlappingInstances #-}
+#define PRAGMA_OVERLAPPING
+#else
+#define PRAGMA_OVERLAPPING {-# OVERLAPPING #-}
+#endif
+
 -- | Building RQL queries in Haskell
 module Database.RethinkDB.ReQL (
   ReQL(..),
@@ -133,7 +140,7 @@
       Datum _ -> return e
       Term t a oa -> Term t a . (oa ++) <$> baseAttributes attrs
       Note n t -> Note n <$> runReQL (ex (ReQL $ return t) attrs)
-      
+
 instance OptArgs b => OptArgs (a -> b) where
   ex f a = flip ex a . f
 
@@ -169,7 +176,7 @@
   else intercalate (sep ++ " ") args
   where
     tooLong = any ('\n' `elem`) args || 80 < (length $ concat args)
-    indent = (\x -> case x of [] -> []; _ -> init x) . unlines . map ("  "++) . lines 
+    indent = (\x -> case x of [] -> []; _ -> init x) . unlines . map ("  "++) . lines
 
 varName :: Int -> String
 varName n = replicate (q+1) (chr $ ord 'a' + r)
@@ -214,7 +221,7 @@
 infix 0 :=
 
 -- | A key/value pair used for building objects
-data Attribute a where 
+data Attribute a where
   (:=) :: Expr e => T.Text -> e -> Attribute a
   (::=) :: (Expr k, Expr v) => k -> v -> Attribute Dynamic
   NoAttribute :: Attribute a
@@ -293,7 +300,7 @@
 
 varsOf :: [Term] -> Maybe [Int]
 varsOf = sequence . map varOf
-    
+
 varOf :: Term -> Maybe Int
 varOf (Term VAR [Datum d] []) = toInt d
 varOf _ = Nothing
@@ -356,10 +363,10 @@
   expr (Left a) = expr ["Left" := a]
   expr (Right b) = expr ["Right" := b]
 
-instance Expr a => Expr (HM.HashMap [Char] a) where
+instance PRAGMA_OVERLAPPING Expr a => Expr (HM.HashMap [Char] a) where
   expr = expr . map (\(k,v) -> T.pack k := v) . HM.toList
 
-instance Expr a => Expr (HM.HashMap T.Text a) where
+instance PRAGMA_OVERLAPPING Expr a => Expr (HM.HashMap T.Text a) where
   expr = expr . map (uncurry (:=)) . HM.toList
 
 instance Expr a => Expr (Map.Map [Char] a) where
@@ -453,7 +460,7 @@
 instance Expr ArgList where
   expr a = op MAKE_ARRAY a
 
-instance (Expr k, Expr v) => Expr (M.HashMap k v) where
+instance PRAGMA_OVERLAPPING (Expr k, Expr v) => Expr (M.HashMap k v) where
   expr m = expr $ map (uncurry (::=)) $ M.toList m
 
 
@@ -578,7 +585,7 @@
   (-) = boundOp (-)
   (*) = boundOp (*)
   negate MinVal = MaxVal
-  negate MaxVal = MaxVal 
+  negate MaxVal = MaxVal
   negate a = fmap negate a
   abs MinVal = MaxVal
   abs a = fmap abs a
diff --git a/rethinkdb.cabal b/rethinkdb.cabal
--- a/rethinkdb.cabal
+++ b/rethinkdb.cabal
@@ -1,5 +1,5 @@
 name: rethinkdb
-version: 2.2.0.7
+version: 2.2.0.8
 cabal-version: >=1.8
 build-type: Simple
 license: Apache
@@ -31,7 +31,7 @@
         base >=4 && <4.10,
         unordered-containers ==0.2.*,
         text >=0.11 && <1.3,
-        aeson >=0.7 && <1.1,
+        aeson >=0.7 && <1.2,
         bytestring ==0.10.*,
         containers ==0.5.*,
         data-default >=0.5 && <0.8,
