diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.2.0.0
+=======
+
+  * Move onto http-conduit 2.0 API
+
 0.1.0.0
 =======
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
 libjenkins
 ==========
+[![Hackage](https://budueba.com/hackage/libjenkins)](http://hackage.haskell.org/package/libjenkins)
 [![Build Status](https://drone.io/github.com/supki/libjenkins/status.png)](https://drone.io/github.com/supki/libjenkins/latest)
 [![Build Status](https://secure.travis-ci.org/supki/libjenkins.png?branch=master)](http://travis-ci.org/supki/libjenkins)
diff --git a/libjenkins.cabal b/libjenkins.cabal
--- a/libjenkins.cabal
+++ b/libjenkins.cabal
@@ -1,5 +1,5 @@
 name:                libjenkins
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Jenkins API interface
 description:         Jenkins API interface. It supports REST and Discovery APIs
 license:             BSD3
@@ -32,7 +32,7 @@
     , conduit       >= 1.0
     , data-default  >= 0.5
     , free          >= 4.1
-    , http-conduit  >= 1.9
+    , http-conduit  >= 2.0 && < 2.1
     , http-types    >= 0.8
     , lens          >= 3.9
     , monad-control >= 0.3
@@ -60,4 +60,4 @@
 source-repository this
   type:     git
   location: https://github.com/supki/libjenkins
-  tag:      0.1.0.0
+  tag:      0.2.0.0
diff --git a/src/Jenkins/REST.hs b/src/Jenkins/REST.hs
--- a/src/Jenkins/REST.hs
+++ b/src/Jenkins/REST.hs
@@ -84,7 +84,7 @@
 {-# INLINE disconnect #-}
 
 -- | Make custom local changes to 'Request'
-with :: (forall m. Request m -> Request m) -> Jenkins a -> Jenkins a
+with :: (Request -> Request) -> Jenkins a -> Jenkins a
 with f j = liftJ $ With f j id
 {-# INLINE with #-}
 
diff --git a/src/Jenkins/REST/Internal.hs b/src/Jenkins/REST/Internal.hs
--- a/src/Jenkins/REST/Internal.hs
+++ b/src/Jenkins/REST/Internal.hs
@@ -42,7 +42,7 @@
   Post :: (forall f. Method Complete f) -> BL.ByteString -> (BL.ByteString -> a) -> JenkinsF a
   Conc :: Jenkins a -> Jenkins b -> (a -> b -> c) -> JenkinsF c
   IO   :: IO a -> JenkinsF a
-  With :: (forall m. Request m -> Request m) -> Jenkins b -> (b -> a) -> JenkinsF a
+  With :: (Request -> Request) -> Jenkins b -> (b -> a) -> JenkinsF a
   Dcon :: JenkinsF a
 
 instance Functor JenkinsF where
@@ -63,7 +63,7 @@
 runJenkinsIO
   :: Manager
   -> Jenkins a
-  -> MaybeT (ReaderT (Request (ResourceT IO)) (ResourceT IO)) a
+  -> MaybeT (ReaderT Request (ResourceT IO)) a
 runJenkinsIO manager = runJenkinsP (jenkinsIO manager)
 {-# INLINE runJenkinsIO #-}
 
@@ -76,8 +76,8 @@
 
 jenkinsIO
   :: Manager
-  -> JenkinsF (MaybeT (ReaderT (Request (ResourceT IO)) (ResourceT IO)) a)
-  -> MaybeT (ReaderT (Request (ResourceT IO)) (ResourceT IO)) a
+  -> JenkinsF (MaybeT (ReaderT Request (ResourceT IO)) a)
+  -> MaybeT (ReaderT Request (ResourceT IO)) a
 jenkinsIO manager = go where
   go (Get m next) = do
     req <- lift ask
@@ -101,7 +101,7 @@
     next (responseBody res)
   go (Conc jenka jenkb next) = do
     (a, b) <- liftWith $ \run' -> liftWith $ \run'' -> liftWith $ \run''' ->
-      let run :: Jenkins t -> IO (StT ResourceT (StT (ReaderT (Request (ResourceT IO))) (StT MaybeT t)))
+      let run :: Jenkins t -> IO (StT ResourceT (StT (ReaderT Request) (StT MaybeT t)))
           run = run''' . run'' . run' . runJenkinsIO manager
       in concurrently (run jenka) (run jenkb)
     c <- restoreT . restoreT . restoreT $ return a
diff --git a/src/Jenkins/REST/Lens.hs b/src/Jenkins/REST/Lens.hs
--- a/src/Jenkins/REST/Lens.hs
+++ b/src/Jenkins/REST/Lens.hs
@@ -16,41 +16,41 @@
 
 
 -- | HTTP request method, eg GET, POST.
-method :: Lens' (H.Request m) H.Method
+method :: Lens' H.Request H.Method
 method f req = (\m' -> req { H.method = m' }) <$> f (H.method req)
 
 -- | Whether to use HTTPS (ie, SSL).
-secure :: Lens' (H.Request m) Bool
+secure :: Lens' H.Request Bool
 secure f req = (\s' -> req { H.secure = s' }) <$> f (H.secure req)
 
-host :: Lens' (H.Request m) ByteString
+host :: Lens' H.Request ByteString
 host f req = (\h' -> req { H.host = h' }) <$> f (H.host req)
 
-port :: Lens' (H.Request m) Int
+port :: Lens' H.Request Int
 port f req = (\p' -> req { H.port = p' }) <$> f (H.port req)
 
 -- | Everything from the host to the query string.
-path :: Lens' (H.Request m) ByteString
+path :: Lens' H.Request ByteString
 path f req = (\p' -> req { H.path = p' }) <$> f (H.path req)
 
-queryString :: Lens' (H.Request m) ByteString
+queryString :: Lens' H.Request ByteString
 queryString f req = (\qs' -> req { H.queryString = qs' }) <$> f (H.queryString req)
 
-requestBody :: Lens' (H.Request m) (H.RequestBody m)
+requestBody :: Lens' H.Request H.RequestBody
 requestBody f req = (\rb' -> req { H.requestBody = rb' }) <$> f (H.requestBody req)
 
-requestHeaders :: Lens' (H.Request m) H.RequestHeaders
+requestHeaders :: Lens' H.Request H.RequestHeaders
 requestHeaders f req = (\rh' -> req { H.requestHeaders = rh' }) <$> f (H.requestHeaders req)
 
 -- | How many redirects to follow when getting a resource. 0 means follow no redirects. Default value: 10.
-redirectCount :: Lens' (H.Request m) Int
+redirectCount :: Lens' H.Request Int
 redirectCount f req = (\rc' -> req { H.redirectCount = rc' }) <$> f (H.redirectCount req)
 
 -- | Check the status code. Note that this will run after all redirects are performed.
 -- Default: return a StatusCodeException on non-2XX responses.
-checkStatus :: Lens' (H.Request m) (H.Status -> H.ResponseHeaders -> H.CookieJar -> Maybe SomeException)
+checkStatus :: Lens' H.Request (H.Status -> H.ResponseHeaders -> H.CookieJar -> Maybe SomeException)
 checkStatus f req = (\cs' -> req { H.checkStatus = cs' }) <$> f (H.checkStatus req)
 
 -- | Number of microseconds to wait for a response. If Nothing, will wait indefinitely. Default: 5 seconds.
-responseTimeout :: Lens' (H.Request m) (Maybe Int)
+responseTimeout :: Lens' H.Request (Maybe Int)
 responseTimeout f req = (\rt' -> req { H.responseTimeout = rt' }) <$> f (H.responseTimeout req)
