diff --git a/rethinkdb-client-driver.cabal b/rethinkdb-client-driver.cabal
--- a/rethinkdb-client-driver.cabal
+++ b/rethinkdb-client-driver.cabal
@@ -1,5 +1,5 @@
 name:                   rethinkdb-client-driver
-version:                0.0.13
+version:                0.0.15
 license:                MIT
 license-file:           LICENSE
 author:                 Tomas Carnecky
@@ -33,18 +33,17 @@
     default-language  : Haskell2010
     hs-source-dirs    : src
 
-    build-depends     : base < 4.8
+    build-depends     : base < 4.9
                       , aeson
                       , binary >= 0.6.0.0
                       , bytestring
                       , hashable
                       , mtl
                       , network
-                      , old-locale
                       , scientific
                       , template-haskell
                       , text
-                      , time
+                      , time >= 1.5.0.1
                       , unordered-containers
                       , vector
 
@@ -65,7 +64,7 @@
     main-is           : Test.hs
     type              : exitcode-stdio-1.0
 
-    build-depends     : base < 4.8
+    build-depends     : base < 4.9
                       , hspec
                       , smallcheck
                       , hspec-smallcheck
@@ -84,7 +83,7 @@
     main-is           : Benchmark.hs
     type              : exitcode-stdio-1.0
 
-    build-depends     : base < 4.8
+    build-depends     : base
                       , criterion
 
                       , rethinkdb-client-driver
diff --git a/src/Database/RethinkDB/TH.hs b/src/Database/RethinkDB/TH.hs
--- a/src/Database/RethinkDB/TH.hs
+++ b/src/Database/RethinkDB/TH.hs
@@ -877,5 +877,4 @@
 valueConName Null       = "Null"
 
 applyCon :: Name -> [Name] -> Q [Pred]
-applyCon con typeNames = return (map apply typeNames)
-  where apply t = ClassP con [VarT t]
+applyCon con = mapM $ \t -> classP con [varT t]
diff --git a/src/Database/RethinkDB/Types/Datum.hs b/src/Database/RethinkDB/Types/Datum.hs
--- a/src/Database/RethinkDB/Types/Datum.hs
+++ b/src/Database/RethinkDB/Types/Datum.hs
@@ -15,7 +15,6 @@
 import           Data.Text           (Text)
 import           Data.Time
 import           Data.Scientific
-import           System.Locale       (defaultTimeLocale)
 import           Data.Time.Clock.POSIX
 
 import           Data.Aeson          (FromJSON(..), ToJSON(..))
@@ -121,7 +120,7 @@
     -- Parse the timezone using 'parseTime'. This overapproximates the
     -- possible responses from the server, but better than rolling our
     -- own timezone parser.
-    tz <- o A..: "timezone" >>= \tz -> case parseTime defaultTimeLocale "%Z" tz of
+    tz <- o A..: "timezone" >>= \tz -> case parseTimeM True defaultTimeLocale "%Z" tz of
         Just d -> pure d
         _      -> fail "Could not parse TimeZone"
 
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -33,22 +33,22 @@
 instance Monad m => Serial m Datum
 
 instance Monad m => Serial m UTCTime where
-    series = decDepth $ fromInt <$> series
+    series = cons1 fromInt
       where
         fromInt :: Int -> UTCTime
         fromInt = posixSecondsToUTCTime . fromIntegral
 
 instance Monad m => Serial m ZonedTime where
-    series = decDepth $ utcToZonedTime utc <$> series
+    series = cons1 (utcToZonedTime utc)
 
 instance Monad m => Serial m Text where
-    series = decDepth $ T.pack <$> series
+    series = cons1 T.pack
 
 instance Monad m => Serial m (HashMap Text Datum) where
-    series = decDepth $ HMS.fromList <$> series
+    series = cons1 HMS.fromList
 
 instance (Monad m, Serial m a) => Serial m (Vector a) where
-    series = decDepth $ V.fromList <$> series
+    series = cons1 V.fromList
 
 
 
