diff --git a/Database/Cayley/Client.hs b/Database/Cayley/Client.hs
--- a/Database/Cayley/Client.hs
+++ b/Database/Cayley/Client.hs
@@ -1,5 +1,5 @@
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE RecordWildCards   #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE RecordWildCards  #-}
 
 module Database.Cayley.Client (
 
diff --git a/Database/Cayley/Types.hs b/Database/Cayley/Types.hs
--- a/Database/Cayley/Types.hs
+++ b/Database/Cayley/Types.hs
@@ -23,10 +23,10 @@
   show MQL     = "mql"
 
 data CayleyConfig = CayleyConfig
-  { serverPort :: Int
-  , serverName :: String
-  , apiVersion :: APIVersion
-  , queryLang  :: QueryLang
+  { serverPort :: !Int
+  , serverName :: !String
+  , apiVersion :: !APIVersion
+  , queryLang  :: !QueryLang
   } deriving (Show)
 
 -- | CayleyConfig { serverPort = 64210 , serverName = "localhost" , apiVersion = V1 , queryLang  = Gremlin }
@@ -39,8 +39,8 @@
   }
 
 data CayleyConnection = CayleyConnection
-  { cayleyConfig :: CayleyConfig
-  , manager :: Manager
+  { cayleyConfig :: !CayleyConfig
+  , manager      :: !Manager
   }
 
 data Quad = Quad
@@ -119,17 +119,17 @@
 parseLink _            = fail "Link expected"
 
 data Node = Node
-  { id           :: !Integer
-  , tags         :: !(Maybe [Tag])   -- ^ list of tags from the query
-  , values       :: !(Maybe [Value]) -- ^ Known values from the query
-  , isLinkNode   :: !Bool            -- ^ Does the node represent the link or the node (the oval shapes)
-  , isFixed      :: !Bool            -- ^ Is the node a fixed starting point of the query
+  { id         :: !Integer
+  , tags       :: !(Maybe [Tag])   -- ^ list of tags from the query
+  , values     :: !(Maybe [Value]) -- ^ Known values from the query
+  , isLinkNode :: !Bool            -- ^ Does the node represent the link or the node (the oval shapes)
+  , isFixed    :: !Bool            -- ^ Is the node a fixed starting point of the query
   } deriving (Eq, Show)
 
 data Link = Link
-  { source    :: !Integer -- ^ Node ID
-  , target    :: !Integer -- ^ Node ID
-  , linkNode  :: !Integer -- ^ Node ID
+  { source   :: !Integer -- ^ Node ID
+  , target   :: !Integer -- ^ Node ID
+  , linkNode :: !Integer -- ^ Node ID
   } deriving (Eq, Show)
 
 type Query = T.Text
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# A Cayley client for Haskell
+# A Cayley client for Haskell ![CI](https://github.com/MichelBoucey/cayley-client/actions/workflows/haskell-ci.yml/badge.svg)
 
 Cayley-client up to 0.4.* implements the [RESTful API](https://github.com/google/cayley/blob/master/docs/HTTP.md) of [Cayley database graph](https://github.com/google/cayley) up to v0.6.0. [Cayley v0.6.1](https://github.com/cayleygraph/cayley/releases/tag/v0.6.1) "includes all the pending features that can be merged before v0.7, which will be a major release [...] and may cause breaking changes".
 
diff --git a/cayley-client.cabal b/cayley-client.cabal
--- a/cayley-client.cabal
+++ b/cayley-client.cabal
@@ -1,63 +1,57 @@
-cabal-version:      >=1.10
-name:               cayley-client
-version:            0.4.19.2
-license:            BSD3
-license-file:       LICENSE
-copyright:          (c) 2015-2022 - Michel Boucey
-maintainer:         michel.boucey@gmail.com
-author:             Michel Boucey
-tested-with:
-    ghc ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.3 || ==9.4.1
-
-homepage:           https://github.com/MichelBoucey/cayley-client
-synopsis:           A Haskell client for the Cayley graph database
-description:
-    cayley-client implements the RESTful API of the Cayley graph database.
+name:                cayley-client
+version:             0.4.19.3
+synopsis:            A Haskell client for the Cayley graph database
+description:         cayley-client implements the RESTful API of the Cayley graph database.
+homepage:            https://github.com/MichelBoucey/cayley-client
+license:             BSD3
+license-file:        LICENSE
+author:              Michel Boucey
+maintainer:          michel.boucey@gmail.com
+copyright:           (c) 2015-2024 - Michel Boucey
+category:            Database
+build-type:          Simple
+cabal-version:       >=1.10
+extra-source-files:  README.md
+                   , tests/testdata.nq
 
-category:           Database
-build-type:         Simple
-extra-source-files:
-    README.md
-    tests/testdata.nq
+Tested-With: GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.8 || ==9.4.8 || ==9.6.4 || ==9.8.1
 
-source-repository head
-    type:     git
-    location: https://github.com/MichelBoucey/cayley-client.git
+Source-Repository head
+  Type: git
+  Location: https://github.com/MichelBoucey/cayley-client.git
 
 library
-    exposed-modules:
-        Database.Cayley.Client
-        Database.Cayley.Types
+  exposed-modules:    Database.Cayley.Client
+                    , Database.Cayley.Types
+  other-modules:      Database.Cayley.Client.Internal
+  default-extensions: OverloadedStrings
+  build-depends:      aeson >= 2 && < 2.3
+                    , attoparsec >= 0.12 && < 0.15
+                    , base >= 4.8.1.0 && < 5
+                    , bytestring >= 0.10.6 && < 0.13
+                    , binary >= 0.7.5 && < 0.13
+                    , exceptions >= 0.8.0.2 && < 0.11
+                    , http-client >= 0.4.30 && < 0.8
+                    , http-conduit >= 2.1.8 && < 2.4
+                    , lens >= 4.12.3 && < 5.3
+                    , mtl >= 2.2.1 && < 2.4
+                    , lens-aeson >= 1.1 && < 1.3
+                    , text >= 1.2.2 && < 2.3
+                    , transformers >= 0.4.2 && < 0.7
+                    , unordered-containers >= 0.2.5.1 && < 0.21
+                    , vector >= 0.9 && < 0.14
 
-    other-modules:      Database.Cayley.Client.Internal
-    default-language:   Haskell2010
-    default-extensions: OverloadedStrings
-    ghc-options:        -Wall
-    build-depends:
-        aeson >=0.8.0.2 && <1.6 || >=2.0 && <2.2,
-        attoparsec >=0.12.1.6 && <0.15,
-        base >=4.8.1.0 && <5,
-        bytestring >=0.10.6 && <0.12,
-        binary >=0.7.5 && <0.11,
-        exceptions >=0.8.0.2 && <0.11,
-        http-client >=0.4.30 && <0.8,
-        http-conduit >=2.1.8 && <2.4,
-        lens >=4.12.3 && <5.3,
-        mtl >=2.2.1 && <2.3,
-        lens-aeson >=1.1 && <1.3,
-        text >=1.2.2 && <1.3,
-        transformers >=0.4.2 && <0.6,
-        unordered-containers >=0.2.5.1 && <0.3,
-        vector >=0.9 && <0.14
+  default-language:   Haskell2010
+  GHC-Options:        -Wall
 
 test-suite tests
-    type:             exitcode-stdio-1.0
-    main-is:          hspec.hs
-    hs-source-dirs:   tests
-    default-language: Haskell2010
-    build-depends:
-        hspec >=2.1.10 && <3,
-        base >=4.8 && <5,
-        cayley-client -any,
-        aeson >=0.8.0.2 && <1.6 || ==2.0.*,
-        unordered-containers >=0.2.5 && <0.3
+  type:               exitcode-stdio-1.0
+  hs-source-dirs:     tests
+  main-is:            hspec.hs
+  build-depends:      hspec >= 2.1.10 && < 3
+                    , base >= 4.8.1.0 && < 5
+                    , cayley-client
+                    , aeson >= 2.0 && < 2.3
+                    , unordered-containers >= 0.2.5 && < 0.3
+  default-language:   Haskell2010
+
