diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Revision history for influxdb
 
+## v1.7.0 - 2019-05-03
+
+* Support GHC 8.8.1-alpha1
+  * The types of `getField` and `getTag` have changed
+* Relax upper version bounds for clock and network
+
 ## v1.6.1.3 - 2019-03-26
 
 * Drop unused dependency on QuickCheck
@@ -94,7 +100,7 @@
 
 * Relax upper version bound for base ([#51](https://github.com/maoe/influxdb-haskell/pull/51))
 * Implement proper escaping and quoting for special characters ([#51](https://github.com/maoe/influxdb-haskell/pull/51), [#52](https://github.com/maoe/influxdb-haskell/pull/52))
-    * Introduce the Measurement type and accompanying functions
+  * Introduce the Measurement type and accompanying functions
 * Fix a bug in the HTTP writer where the precision parameter is ignored when constructing requests
 * Some minor doctest fixes
 
@@ -127,8 +133,8 @@
 * The `FieldVal` has been renamed to `Field` which takes `Nullability` as a type parameter.
 * `localServer` has been renamed to `defaultServer`
 * Some constructors in `InfluxException` have been renamed
-    * `BadRequest` to `ClientError`
-    * `IllformedJSON` to `UnexpectedResponse`
+  * `BadRequest` to `ClientError`
+  * `IllformedJSON` to `UnexpectedResponse`
 * Added a smart constructor `credentials` for `Credentials`
 * Dropped `parseTimestamp` and added `parseUTCTime`
 * `ping` handles timeout proerply and throws `InfluxException` on failure
@@ -189,7 +195,7 @@
 * Add `writeSeriesData`
 * Relax upper version bound for exceptions
 * Drop support for old retry package
-    * retry < 0.6 had an unexpected behavior wrt exception masking state (https://github.com/Soostone/retry/pull/12)
+  * retry < 0.6 had an unexpected behavior wrt exception masking state (https://github.com/Soostone/retry/pull/12)
 
 ## v0.9.0.1 - 2015-01-06
 
@@ -204,7 +210,7 @@
 ## v0.8.0 - 2014-11-07
 
 * Retry on connection failure and response timeout in addition to IOException
-    * Note that this may break existing code silently
+  * Note that this may break existing code silently
 
 ## v0.7.1.1 - 2014-09-19
 
@@ -218,15 +224,15 @@
 ## v0.7.0 - 2014-09-12
 
 * Support for influxdb v0.8 (#15)
-    * Add shard spaces API
-    * Add `configureDatabase`
+  * Add shard spaces API
+  * Add `configureDatabase`
 * Add Typeable and Generic instances where missing
 * Remove unused `ScheduledDelete` type
 
 ## v0.6.0 - 2014-08-19
 
 * Support for retry-0.5 (#16)
-    * `newServerPoolWithRetrySettings` has been renamed to `newServerPoolWithRetryPolicy`
+  * `newServerPoolWithRetrySettings` has been renamed to `newServerPoolWithRetryPolicy`
     * `serverRetrySettings` field in `ServerPool` has been renamed to `serverRetryPolicy`
 * Support for network-uri (#17)
 
@@ -238,9 +244,9 @@
 
 * Add `InfluxException` type and use it when decoding JSON or SeriesData (#12)
 * New API
-    * `ping`
-    * `listInterfaces`
-    * `isInSync`
+  * `ping`
+  * `listInterfaces`
+  * `isInSync`
 * BUGFIX: Fix `when expecting a Float, encountered Int instead` error (#14)
 
 ## v0.4.2 - 2014-06-06
@@ -262,8 +268,8 @@
 ## v0.3.0 - 2014-06-03
 
 * Support for InfluxDB v0.7
-    * Renamed `username` field for `/cluster_admins` to `user`
-    * No support for the old field name
+  * Renamed `username` field for `/cluster_admins` to `user`
+  * No support for the old field name
 
 ## v0.2.2 - 2014-05-08
 
diff --git a/influxdb.cabal b/influxdb.cabal
--- a/influxdb.cabal
+++ b/influxdb.cabal
@@ -1,5 +1,5 @@
 name: influxdb
-version: 1.6.1.3
+version: 1.7.0
 synopsis: Haskell client library for InfluxDB
 description:
   @influxdb@ is a Haskell client library for InfluxDB.
@@ -15,11 +15,11 @@
 build-type: Custom
 cabal-version: 1.24
 tested-with:
-  GHC == 7.10.3
   GHC == 8.0.2
   GHC == 8.2.2
   GHC == 8.4.4
-  GHC == 8.6.4
+  GHC == 8.6.5
+  GHC == 8.8.1
 
 extra-source-files:
   README.md
@@ -73,17 +73,17 @@
     ViewPatterns
   ghc-options: -Wall
   build-depends:
-      base >= 4.8 && < 4.13
+      base >= 4.9 && < 4.14
     , aeson >= 0.7 && < 1.5
     , attoparsec < 0.14
     , bytestring >= 0.10 && < 0.11
-    , clock >= 0.7 && < 0.8
+    , clock >= 0.7 && < 0.9
     , containers >= 0.5 && < 0.7
     , foldl < 1.5
     , http-client >= 0.5 && < 0.7
     , http-types >= 0.8.6 && < 0.13
     , lens >= 4.9 && < 4.18
-    , network >= 2.6 && < 3.1
+    , network >= 2.6 && < 3.2
     , optional-args >= 1.0 && < 1.1
     , scientific >= 0.3.3 && < 0.4
     , tagged >= 0.1 && < 0.9
diff --git a/src/Database/InfluxDB/JSON.hs b/src/Database/InfluxDB/JSON.hs
--- a/src/Database/InfluxDB/JSON.hs
+++ b/src/Database/InfluxDB/JSON.hs
@@ -34,6 +34,7 @@
 import Control.Applicative
 import Control.Exception
 import Control.Monad
+import qualified Control.Monad.Fail as Fail
 import Data.Maybe
 
 import Data.Aeson
@@ -122,26 +123,26 @@
 
 -- | Get a field value from a column name
 getField
-  :: Monad m
+  :: Fail.MonadFail m
   => Text -- ^ Column name
   -> Vector Text -- ^ Columns
   -> Vector Value -- ^ Field values
   -> m Value
 getField column columns fields =
   case V.elemIndex column columns of
-    Nothing -> fail $ "getField: no such column " ++ show column
+    Nothing -> Fail.fail $ "getField: no such column " ++ show column
     Just idx -> case V.indexM fields idx of
-      Nothing -> fail $ "getField: index out of bound for " ++ show column
+      Nothing -> Fail.fail $ "getField: index out of bound for " ++ show column
       Just field -> return field
 
 -- | Get a tag value from a tag name
 getTag
-  :: Monad m
+  :: Fail.MonadFail m
   => Text -- ^ Tag name
   -> HashMap Text Value -- ^ Tags
   -> m Value
 getTag tag tags = case HashMap.lookup tag tags of
-  Nothing -> fail $ "getTag: no such tag " ++ show tag
+  Nothing -> Fail.fail $ "getTag: no such tag " ++ show tag
   Just val -> return val
 
 -- | Parse a result response.
diff --git a/src/Database/InfluxDB/Query.hs b/src/Database/InfluxDB/Query.hs
--- a/src/Database/InfluxDB/Query.hs
+++ b/src/Database/InfluxDB/Query.hs
@@ -444,7 +444,7 @@
     applyBasicAuth =
       case queryAuthentication of
         Nothing -> id
-        Just (Credentials {..}) ->
+        Just Credentials {..} ->
           HC.applyBasicAuth (TE.encodeUtf8 _user) (TE.encodeUtf8 _password)
 
 errorQuery :: String -> HC.Request -> HC.Response body -> A.Value -> IO a
diff --git a/src/Database/InfluxDB/Types.hs b/src/Database/InfluxDB/Types.hs
--- a/src/Database/InfluxDB/Types.hs
+++ b/src/Database/InfluxDB/Types.hs
@@ -7,7 +7,6 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE StandaloneDeriving #-}
