diff --git a/AWS/Class.hs b/AWS/Class.hs
--- a/AWS/Class.hs
+++ b/AWS/Class.hs
@@ -14,6 +14,7 @@
     , runAWSwithManager
     , AWSException(..)
     , AWSContext(..)
+    , AWSSettings(..)
     , getLastRequestId
       -- * re-export
     , monadThrow
@@ -80,15 +81,20 @@
     , lastRequestId :: Maybe Text
     }
 
+data AWSSettings = AWSSettings
+    { credential :: Credential
+    , httpTimeout :: Maybe Int
+    }
+
 newtype AWS context m a = AWST
-    { runAWST :: StateT context (ReaderT Credential m) a
+    { runAWST :: StateT context (ReaderT AWSSettings m) a
     } deriving
     ( Monad
     , Applicative
     , Functor
     , MonadIO
     , MonadState context
-    , MonadReader Credential
+    , MonadReader AWSSettings
     , MonadBase base
     )
 
@@ -119,7 +125,7 @@
     -> AWS c m a
     -> m a
 runAWS ctx cred app = do
-    mgr <- liftIO $ HTTP.newManager HTTP.def
+    mgr <- liftIO $ HTTP.newManager HTTP.conduitManagerSettings
     runAWSwithManager mgr ctx cred app
 
 runAWSwithManager :: Monad m
@@ -131,7 +137,7 @@
 runAWSwithManager mgr ctx cred app =
     R.runReaderT
         (S.evalStateT (runAWST app) $ ctx mgr)
-        cred
+        $ AWSSettings cred (Just 60000000)
 
 getLastRequestId :: (Monad m, Functor m) => AWS AWSContext m (Maybe Text)
 getLastRequestId = lastRequestId <$> S.get
diff --git a/AWS/EC2/Metadata.hs b/AWS/EC2/Metadata.hs
--- a/AWS/EC2/Metadata.hs
+++ b/AWS/EC2/Metadata.hs
@@ -55,7 +55,7 @@
 query :: String -> IO [ByteString]
 query path = runResourceT $ do
     req <- liftIO $ parseUrl (base <> path)
-    mgr <- liftIO $ newManager def
+    mgr <- liftIO $ newManager conduitManagerSettings
     res <- http req mgr
     responseBody res $$+- CB.lines =$ CL.consume
 
@@ -155,7 +155,7 @@
 queryRaw :: String -> IO ByteString
 queryRaw path = runResourceT $ do
     req <- liftIO $ parseUrl (base <> path)
-    mgr <- liftIO $ newManager def
+    mgr <- liftIO $ newManager conduitManagerSettings
     res <- http req mgr
     mconcat <$> (responseBody res $$+- CL.consume)
 
diff --git a/AWS/EC2/Query.hs b/AWS/EC2/Query.hs
--- a/AWS/EC2/Query.hs
+++ b/AWS/EC2/Query.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE FlexibleContexts, RankNTypes, CPP #-}
+{-# LANGUAGE FlexibleContexts, RankNTypes #-}
 
 module AWS.EC2.Query
     ( ec2Query
@@ -75,10 +75,10 @@
     -> Conduit Event m o
     -> EC2 m (ResumableSource m o)
 ec2QuerySource' action params token cond = do
-    cred <- Reader.ask
+    settings <- Reader.ask
     ctx <- State.get
     (src1, rid) <- lift $ E.handle exceptionTransform $ do
-        response <- requestQuery cred ctx action params' apiVersion sinkError
+        response <- requestQuery settings ctx action params' apiVersion sinkError
         res <- response $=+ XmlP.parseBytes XmlP.def
         res $$++ sinkRequestId
     State.put ctx{lastRequestId = rid}
diff --git a/AWS/ELB/LoadBalancer.hs b/AWS/ELB/LoadBalancer.hs
--- a/AWS/ELB/LoadBalancer.hs
+++ b/AWS/ELB/LoadBalancer.hs
@@ -27,7 +27,6 @@
     ) where
 
 import Data.Text (Text)
-import Data.IP (IPv4, AddrRange)
 import Data.Conduit
 import Control.Applicative
 import Data.XML.Types (Event(..))
@@ -125,7 +124,7 @@
     -> [Text] -- ^ AvailabilityZones
     -> Maybe Text -- ^ Scheme
     -> [Text] -- ^ SecurityGroups
-    -> [AddrRange IPv4] -- ^ Subnets
+    -> [Text] -- ^ Subnets
     -> ELB m Text -- return DNSName
 createLoadBalancer name listeners zones scheme groups subnets =
     elbQuery "CreateLoadBalancer" params $ getT "DNSName"
@@ -136,7 +135,7 @@
         , "AvailabilityZones.member" |.#= zones
         , "Scheme" |=? scheme
         , "SecurityGroups.member" |.#= groups
-        , "Subnets.member" |.#= map toText subnets
+        , "Subnets.member" |.#= subnets
         ]
     listeners' = flip map listeners $
         \(Listener prot lbport iprot cert iport) ->
diff --git a/AWS/Lib/Parser.hs b/AWS/Lib/Parser.hs
--- a/AWS/Lib/Parser.hs
+++ b/AWS/Lib/Parser.hs
@@ -24,7 +24,6 @@
 import Data.ByteString (ByteString)
 import Data.Char (isSpace)
 import Data.Conduit
-import Data.Conduit.Internal (ConduitM)
 import qualified Data.Conduit.List as CL
 import qualified Data.Text as T
 import qualified Text.XML.Stream.Parse as XML
diff --git a/AWS/Lib/Query.hs b/AWS/Lib/Query.hs
--- a/AWS/Lib/Query.hs
+++ b/AWS/Lib/Query.hs
@@ -41,7 +41,7 @@
 import Data.Map (Map)
 import Network.HTTP.Conduit (HttpException)
 import qualified Network.HTTP.Types as H
-import Network.TLS (HandshakeFailed)
+import Network.TLS (TLSException)
 import qualified Data.Digest.Pure.SHA as SHA
 import qualified Data.ByteString.Base64 as BASE
 import Control.Monad.IO.Class (MonadIO, liftIO)
@@ -220,22 +220,23 @@
 
 requestQuery
     :: (MonadResource m, MonadBaseControl IO m)
-    => Credential
+    => AWSSettings
     -> AWSContext
     -> ByteString
     -> [QueryParam]
     -> ByteString
     -> (ByteString -> Int -> Consumer Event m a)
     -> m (ResumableSource m ByteString)
-requestQuery cred ctx action params ver errSink = do
+requestQuery settings ctx action params ver errSink = do
     let mgr = manager ctx
     let ep = endpoint ctx
+    let cred = credential settings
     time <- liftIO getCurrentTime
     let url = mkUrl ep cred time action params ver
     request <- liftIO $ HTTP.parseUrl (BSC.unpack url)
     let req = request
             { HTTP.checkStatus = checkStatus'
-            , HTTP.responseTimeout = Just 30000000
+            , HTTP.responseTimeout = httpTimeout settings
             }
     response <- HTTP.http req mgr
     let body = HTTP.responseBody response
@@ -282,9 +283,9 @@
     -> AWS AWSContext m a
 commonQuery apiVersion action params sink = do
     ctx <- State.get
-    cred <- Reader.ask
+    settings <- Reader.ask
     (res, rid) <- lift $ E.handle exceptionTransform $ do
-        rs <- requestQuery cred ctx action params apiVersion sinkError
+        rs <- requestQuery settings ctx action params apiVersion sinkError
         rs $$+- XmlP.parseBytes XmlP.def
            =$   sinkResponse (bsToText action) sink
     State.put ctx { lastRequestId = Just rid }
@@ -304,5 +305,5 @@
     awse = fromException e :: Maybe AWSException
     xmle = fromException e :: Maybe XmlException
     httpe = fromException e :: Maybe HttpException
-    tlse  = fromException e :: Maybe HandshakeFailed
+    tlse  = fromException e :: Maybe TLSException
     ioe   = fromException e :: Maybe IOException
diff --git a/AWS/RDS/Internal.hs b/AWS/RDS/Internal.hs
--- a/AWS/RDS/Internal.hs
+++ b/AWS/RDS/Internal.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE FlexibleContexts, RankNTypes, CPP #-}
+{-# LANGUAGE FlexibleContexts, RankNTypes #-}
 
 module AWS.RDS.Internal
     ( apiVersion
@@ -52,8 +52,8 @@
     -> RDS m ()
 rdsQueryOnlyMetadata action params = do
     ctx <- State.get
-    cred <- Reader.ask
-    rs <- lift $ requestQuery cred ctx action params apiVersion sinkError
+    settings <- Reader.ask
+    rs <- lift $ requestQuery settings ctx action params apiVersion sinkError
     rid <- lift $ rs $$+-
         XmlP.parseBytes XmlP.def =$
             sinkResponseOnlyMetadata (bsToText action)
diff --git a/aws-sdk.cabal b/aws-sdk.cabal
--- a/aws-sdk.cabal
+++ b/aws-sdk.cabal
@@ -1,5 +1,5 @@
 name:                aws-sdk
-version:             0.12.0
+version:             0.12.1
 synopsis:            AWS SDK for Haskell
 description: AWS (Amazon Web Services) sdk for Haskell.
              .
