diff --git a/datadog.cabal b/datadog.cabal
--- a/datadog.cabal
+++ b/datadog.cabal
@@ -1,14 +1,16 @@
--- This file has been generated from package.yaml by hpack version 0.17.1.
+-- This file has been generated from package.yaml by hpack version 0.20.0.
 --
 -- see: https://github.com/sol/hpack
+--
+-- hash: e9f4d5b9aa948a2ac508a5308ad44859778b1fadce4c21277be4be4cc42be39a
 
 name:           datadog
-version:        0.2.0.0
+version:        0.2.2.0
 synopsis:       Datadog client for Haskell. Supports both the HTTP API and StatsD.
 category:       Network
 homepage:       https://github.com/iand675/datadog
 author:         Ian Duncan
-maintainer:     ian@iankduncan.com
+maintainer:     Ian Duncan <ian@iankduncan.com>, Kostiantyn Rybnikov <k-bx@k-bx.com>
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
@@ -22,7 +24,7 @@
   build-depends:
       aeson
     , auto-update
-    , base >= 4.7 && < 5
+    , base >=4.7 && <5
     , buffer-builder
     , bytestring
     , dlist
@@ -51,6 +53,8 @@
       Network.Datadog.Monitor
       Network.Datadog.Types
       Network.StatsD.Datadog
+  other-modules:
+      Paths_datadog
   default-language: Haskell2010
 
 test-suite datadog-api-test
@@ -61,12 +65,16 @@
   default-extensions: ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving LambdaCase MultiParamTypeClasses NamedFieldPuns NoMonomorphismRestriction OverloadedStrings PackageImports PolyKinds QuasiQuotes RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns
   ghc-options: -Wall -fwarn-tabs -O2
   build-depends:
-      aeson
+      Cabal
+    , aeson
     , auto-update
-    , base >= 4.7 && < 5
+    , base
     , buffer-builder
     , bytestring
+    , datadog
     , dlist
+    , exceptions
+    , hspec
     , http-client
     , http-client-tls
     , http-types
@@ -75,21 +83,12 @@
     , monad-control
     , network
     , old-locale
+    , random
     , text
     , time
     , transformers-base
     , unordered-containers
     , vector
-    , base
-    , Cabal
-    , exceptions
-    , hspec
-    , network
-    , lens
-    , random
-    , text
-    , time
-    , datadog
   other-modules:
       Test.Network.Datadog
       Test.Network.Datadog.Check
@@ -98,4 +97,5 @@
       Test.Network.Datadog.Host
       Test.Network.Datadog.Monitor
       Test.Network.Datadog.StatsD
+      Paths_datadog
   default-language: Haskell2010
diff --git a/src/Network/Datadog.hs b/src/Network/Datadog.hs
--- a/src/Network/Datadog.hs
+++ b/src/Network/Datadog.hs
@@ -24,7 +24,7 @@
 import qualified Data.Text as T
 import           Data.Text.Encoding (encodeUtf8)
 
-import Network.HTTP.Client (newManager, withManager)
+import Network.HTTP.Client (newManager)
 import Network.HTTP.Client.TLS (tlsManagerSettings)
 
 import System.Environment (getEnv)
@@ -55,7 +55,7 @@
   where managerIO = newManager tlsManagerSettings
 
 withDatadog :: DatadogCredentials k => k -> (DatadogClient k -> IO a) -> IO a
-withDatadog k f = withManager tlsManagerSettings $ \man -> f $ DatadogClient man k
+withDatadog k f = newManager tlsManagerSettings >>= \man -> f $ DatadogClient man k
 
 writeCredentials :: T.Text -> Write
 writeCredentials = Write . encodeUtf8
diff --git a/src/Network/Datadog/Internal.hs b/src/Network/Datadog/Internal.hs
--- a/src/Network/Datadog/Internal.hs
+++ b/src/Network/Datadog/Internal.hs
@@ -50,7 +50,7 @@
 
 datadogHttp :: Environment-> String -> [(String, String)] -> StdMethod -> Maybe LBS.ByteString -> IO LBS.ByteString
 datadogHttp (Environment keys baseUrl manager) endpoint q httpMethod content = do
-  initReq <- parseUrl $ baseUrl ++ endpoint
+  initReq <- parseUrlThrow $ baseUrl ++ endpoint
   let body = RequestBodyLBS $ fromMaybe LBS.empty content
       headers = [("Content-type", "application/json") | isJust content]
       apiQuery = [("api_key", apiKey keys)
@@ -72,7 +72,7 @@
                        "\": " ++ e ++ ": " ++ unpack (decodeUtf8 body)
 
 baseRequest :: Request
-baseRequest = fromJust $ parseUrl "https://app.datadoghq.com"
+baseRequest = fromJust $ parseUrlThrow "https://app.datadoghq.com"
 
 class DatadogCredentials s where
   signRequest :: s -> Request -> Request
diff --git a/src/Network/Datadog/Types.hs b/src/Network/Datadog/Types.hs
--- a/src/Network/Datadog/Types.hs
+++ b/src/Network/Datadog/Types.hs
@@ -8,6 +8,7 @@
 import           Data.ByteString.Char8 (ByteString)
 import           Data.DList (DList)
 import           Data.HashMap.Strict (HashMap)
+import           Data.Semigroup
 import           Data.Text (Text)
 import qualified Data.Text as T
 import           Data.Int (Int64)
@@ -209,7 +210,7 @@
 data WrappedEvents = WrappedEvents { wrappedEvents :: [Event] }
 
 newtype Series = Series { fromSeries :: DList Metric }
-                 deriving (Monoid)
+                 deriving (Semigroup, Monoid)
 
 data MetricPoints = Gauge   [(POSIXTime, Float)]
                   | Counter [(POSIXTime, Int64)]
