diff --git a/network-api-support.cabal b/network-api-support.cabal
--- a/network-api-support.cabal
+++ b/network-api-support.cabal
@@ -1,5 +1,5 @@
 Name:               network-api-support
-Version:            0.0.2
+Version:            0.0.3
 License:            BSD3
 License-File:       LICENSE
 Author:             Mark Hibberd <mark@hibberd.id.au>
diff --git a/src/Network/Api/Support/Request.hs b/src/Network/Api/Support/Request.hs
--- a/src/Network/Api/Support/Request.hs
+++ b/src/Network/Api/Support/Request.hs
@@ -4,6 +4,9 @@
 , setApiKey
 , setParams
 , setHeaders
+, setHeader
+, addHeader
+, stripHeader
 , setMethod
 , setBody
 , setBodyLazy
@@ -38,8 +41,22 @@
 
 -- | Set request headers.
 setHeaders :: [(CI B.ByteString, B.ByteString)] -> RequestTransformer m
-setHeaders m = Endo $ \r -> r { requestHeaders = m }
+setHeaders hs = Endo $ \r -> r { requestHeaders = hs }
 
+-- | Set a request headers.
+setHeader :: (CI B.ByteString, B.ByteString) -> RequestTransformer m
+setHeader h = stripHeader (fst h) <> addHeader h
+
+-- | Add a request headers.
+addHeader :: (CI B.ByteString, B.ByteString) -> RequestTransformer m
+addHeader h = Endo $ \r -> r { requestHeaders = requestHeaders r ++ [h] }
+
+-- | Set a request headers.
+stripHeader :: CI B.ByteString -> RequestTransformer m
+stripHeader n = (Endo $ \r ->  r {
+    requestHeaders = filter (\x -> fst x == n) (requestHeaders r)
+  })
+
 -- | Set the request method to be the specified name.
 setMethod :: B.ByteString -> RequestTransformer m
 setMethod m = Endo $ \r -> r { method = m }
@@ -54,7 +71,8 @@
 
 -- | Set the request body from the value which can be converted to JSON.
 setJson :: ToJSON a => a -> RequestTransformer m
-setJson = setBodyLazy . encode . toJSON
+setJson v = setHeader ("Content-Type", "application/json") <>
+            (setBodyLazy . encode . toJSON $ v)
 
 -- * Compatability
 
diff --git a/src/Network/Api/Support/Security.hs b/src/Network/Api/Support/Security.hs
--- a/src/Network/Api/Support/Security.hs
+++ b/src/Network/Api/Support/Security.hs
@@ -7,11 +7,12 @@
 
 import Network.TLS (TLSCertificateUsage)
 import Network.TLS.Extra (certificateVerifyDomain)
+import Data.CertificateStore (CertificateStore)
 
 -- | A TLS validator that checks the domain only. Note that this means the validator
 -- | will not check the cert chain, and can be used on systems where Data.Certificate.X509
 -- | falls over as it does not have access to local root certs.
 -- |
 -- | ! Use with caution !
-checkDomainOnly :: B8.ByteString -> [X509] -> IO TLSCertificateUsage
-checkDomainOnly host' certs = return $ certificateVerifyDomain (B8.unpack host') certs
+checkDomainOnly :: CertificateStore -> B8.ByteString -> [X509] -> IO TLSCertificateUsage
+checkDomainOnly _ host' certs = return $ certificateVerifyDomain (B8.unpack host') certs
