diff --git a/api-builder.cabal b/api-builder.cabal
--- a/api-builder.cabal
+++ b/api-builder.cabal
@@ -1,5 +1,5 @@
 name: api-builder
-version: 0.11.0.0
+version: 0.12.0.0
 synopsis: Library for easily building REST API wrappers in Haskell
 license: BSD3
 license-file: LICENSE
@@ -33,16 +33,17 @@
     Network.API.Builder.Send
     Network.API.Builder.Send.Multipart
   build-depends:
-    base >= 4.6 && < 4.9,
-    aeson >= 0.9 && < 0.10,
+    base >= 4.6 && < 4.10,
+    aeson >= 0.9 && < 0.12,
     bifunctors >= 4.0 && < 6.0,
     bytestring == 0.10.*,
     HTTP == 4000.*,
-    http-client >= 0.4.11 && < 0.4.21,
-    http-client-tls >= 0.2 && < 0.2.3,
-    http-types == 0.8.*,
+    http-client >= 0.4.30 && < 0.6,
+    http-client-tls >= 0.2 && < 0.4,
+    http-types >= 0.8 && < 0.10,
     text == 1.*,
-    transformers >= 0.4 && < 0.5
+    tls >= 1.2 && < 1.4,
+    transformers >= 0.4 && < 0.6
   hs-source-dirs: src/
   default-language: Haskell2010
   default-extensions:
diff --git a/src/Network/API/Builder/API.hs b/src/Network/API/Builder/API.hs
--- a/src/Network/API/Builder/API.hs
+++ b/src/Network/API/Builder/API.hs
@@ -81,7 +81,6 @@
 execAPI b s api = do
   m <- liftIO $ newManager tlsManagerSettings
   (res, _, _) <- runAPI b m s api
-  liftIO $ closeManager m
   return res
 
 -- | Runs an @API@ by executing its transformer stack and dumping it all into @IO@.
diff --git a/src/Network/API/Builder/Examples/StackOverflow.hs b/src/Network/API/Builder/Examples/StackOverflow.hs
--- a/src/Network/API/Builder/Examples/StackOverflow.hs
+++ b/src/Network/API/Builder/Examples/StackOverflow.hs
@@ -35,6 +35,9 @@
 stackOverflow :: Builder
 stackOverflow = basicBuilder "StackOverflow API" "http://api.stackexchange.com"
 
+stackOverflowSSL :: Builder
+stackOverflowSSL = basicBuilder "StackOverflow API" "https://api.stackexchange.com"
+
 answersRoute :: Route
 answersRoute = Route { urlPieces = [ "2.2", "questions" ]
                      , urlParams = [ "order" =. ("desc" :: Text)
@@ -44,3 +47,6 @@
 
 getAnswers :: IO (Either (APIError ()) Questions)
 getAnswers = execAPI stackOverflow () $ runRoute answersRoute
+
+getAnswersSSL :: IO (Either (APIError ()) Questions)
+getAnswersSSL = execAPI stackOverflowSSL () $ runRoute answersRoute
diff --git a/src/Network/API/Builder/Send.hs b/src/Network/API/Builder/Send.hs
--- a/src/Network/API/Builder/Send.hs
+++ b/src/Network/API/Builder/Send.hs
@@ -18,7 +18,7 @@
   send builder r () =
     case httpMethod r of
       "POST" -> do
-        req <- parseUrl $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)
+        req <- parseUrlThrow $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)
         return $ _customizeRequest builder $
           req { requestHeaders = ("Content-Type", "application/x-www-form-urlencoded") : requestHeaders req
               , requestBody = RequestBodyBS (dropQuestion $ queryString req)
@@ -29,19 +29,22 @@
 
 basicSend :: Builder -> Route -> Maybe Request
 basicSend builder r = do
-  req <- parseUrl $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)
+  req <- parseUrlThrow $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)
   return $ _customizeRequest builder $ req { method = httpMethod r }
 
 instance Sendable Value where
   send builder r value =
     case httpMethod r of
       "POST" -> do
-        req <- parseUrl $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)
+        req <- parseUrlThrow $ Text.unpack $ routeURL (_baseURL builder) (_customizeRoute builder r)
         return $ _customizeRequest builder $
           req { requestBody = RequestBodyLBS (encode value)
               , requestHeaders = ("Content-Type", "application/json") : requestHeaders req
               , method = httpMethod r }
       _ -> Nothing
+
+useToJSON :: ToJSON a => Builder -> Route -> a -> Maybe Request
+useToJSON b r v = send b r (toJSON v)
 
 instance Sendable ByteString where
   send builder r bs =
