diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,21 @@
 # LDAP Client Changelog
 
+## [0.4.2](https://github.com/alasconnect/ldap-client/tree/0.4.2) (2021-10-07)
+
+[Full Changelog](https://github.com/alasconnect/ldap-client/compare/0.4.1...0.4.2)
+
+**Merged pull requests:**
+
+- add openFromConnection to expose Connection [\#6](https://github.com/alasconnect/ldap-client/pull/6) ([jecaro](https://github.com/jecaro))
+
+## [0.4.1](https://github.com/alasconnect/ldap-client/tree/0.4.1) (2020-06-09)
+
+[Full Changelog](https://github.com/alasconnect/ldap-client/compare/0.4.0...0.4.1)
+
+**Merged pull requests:**
+
+- Version bump and TravisCI GHC [\#5](https://github.com/alasconnect/ldap-client/pull/5) ([boj](https://github.com/boj))
+- only implement fail for old ghc version [\#4](https://github.com/alasconnect/ldap-client/pull/4) ([glatteis](https://github.com/glatteis))
 
 ## [0.4.0](https://github.com/alasconnect/ldap-client/tree/0.4.0) (2019-11-07)
 
diff --git a/ldap-client.cabal b/ldap-client.cabal
--- a/ldap-client.cabal
+++ b/ldap-client.cabal
@@ -1,5 +1,5 @@
 name:                ldap-client
-version:             0.4.1
+version:             0.4.2
 synopsis:            Pure Haskell LDAP Client Library
 description:
   Pure Haskell LDAP client library implementing (the parts of) RFC 4511.
@@ -25,7 +25,7 @@
 source-repository head
   type:     git
   location: git@github.com:alasconnect/ldap-client
-  tag:      0.4.0
+  tag:      0.4.2
 
 library
   ghc-options:
diff --git a/src/Ldap/Client.hs b/src/Ldap/Client.hs
--- a/src/Ldap/Client.hs
+++ b/src/Ldap/Client.hs
@@ -15,6 +15,7 @@
   , runsIn
   , runsInEither
   , open
+  , openFromConnection
   , close
   , Host(..)
   , defaultTlsSettings
@@ -198,6 +199,23 @@
 open host port = do
   context <- Conn.initConnectionContext
   conn <- Conn.connectTo context params
+  openFromConnection conn
+ where
+  params = Conn.ConnectionParams
+    { Conn.connectionHostname =
+        case host of
+          Plain h -> h
+          Tls   h _ -> h
+    , Conn.connectionPort = port
+    , Conn.connectionUseSecure =
+        case host of
+          Plain  _ -> Nothing
+          Tls _ settings -> pure settings
+    , Conn.connectionUseSocks = Nothing
+    }
+
+openFromConnection :: Connection -> IO (LdapH)
+openFromConnection conn = do
   reqQ <- newTQueueIO
   inQ  <- newTQueueIO
   outQ <- newTQueueIO
@@ -216,19 +234,6 @@
   workers <- Async.async (snd <$> Async.waitAnyCancel [inW, outW, dispW])
 
   pure (LdapH (Ldap reqQ workers conn))
- where
-  params = Conn.ConnectionParams
-    { Conn.connectionHostname =
-        case host of
-          Plain h -> h
-          Tls   h _ -> h
-    , Conn.connectionPort = port
-    , Conn.connectionUseSecure =
-        case host of
-          Plain  _ -> Nothing
-          Tls _ settings -> pure settings
-    , Conn.connectionUseSocks = Nothing
-    }
 
 -- | Closes an LDAP connection.
 -- This is to be used in together with 'open'.
