diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+1.1.0
+=====
+* Migrate to `eventsource-api` 1.5.0.
+* Expose `fromGESEvent` function.
+
 1.0.6
 =====
 * Support evenstore >= 1.1
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# [eventsource-geteventstore-store][]
+# eventsource-geteventstore-store
 
 [GetEventStore][] `Store` implementation. It's based on [eventstore][] driver.
 
@@ -6,6 +6,5 @@
 
 In order to run the tests, you'll need a running [GetEventStore][] server at `localhost` on the `1113` port.
 
-[eventsource-geteventstore-store]: https://github.com/YoEight/eventsource-api
-[GetEventStore]: http://geteventstore.com
-[eventstore]: https://github.com/YoEight/eventstore
+[GetEventStore]: http://eventstore.org
+[eventstore]: https://gitlab.com/YoEight/eventstore-hs
diff --git a/eventsource-geteventstore-store.cabal b/eventsource-geteventstore-store.cabal
--- a/eventsource-geteventstore-store.cabal
+++ b/eventsource-geteventstore-store.cabal
@@ -1,67 +1,73 @@
--- This file has been generated from package.yaml by hpack version 0.20.0.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.1.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 2f7d6b067b79c8e983367020e1da7747b66bdc8de579d77677a35442661b4f34
+-- hash: f70a57042b5ec5e9068d0bdcd9377197f1ea13010e8a19aa9c0cfd1a27602409
 
 name:           eventsource-geteventstore-store
-version:        1.1.0
+version:        1.2.0
 synopsis:       GetEventStore store implementation.
 description:    GetEventStore store implementation.
 category:       Eventsourcing
-homepage:       https://github.com/YoEight/eventsource-api#readme
-bug-reports:    https://github.com/YoEight/eventsource-api/issues
+homepage:       https://gitlab.com/YoEight/eventsource-api-hs
 author:         Yorick Laupa
 maintainer:     yo.eight@gmail.com
 license:        BSD3
 license-file:   LICENSE.md
 build-type:     Simple
-cabal-version:  >= 1.10
-
 extra-source-files:
     CHANGELOG.md
     LICENSE.md
     package.yaml
     README.md
 
-source-repository head
-  type: git
-  location: https://github.com/YoEight/eventsource-api
-
 library
+  exposed-modules:
+      EventSource.Store.GetEventStore
+  other-modules:
+      Paths_eventsource_geteventstore_store
   hs-source-dirs:
       library
   ghc-options: -Wall
   build-depends:
       aeson
     , base >=4.9 && <5
-    , eventsource-api >=1.3
-    , eventstore >=1.1
+    , eventsource-api >=1.5
+    , eventsource-store-specs
+    , eventstore >=1.2
+    , lifted-async
+    , lifted-base
     , mtl
+    , streaming
     , string-conversions
     , transformers-base
-  exposed-modules:
-      EventSource.Store.GetEventStore
-  other-modules:
-      Paths_eventsource_geteventstore_store
   default-language: Haskell2010
 
 test-suite geteventstore-store-test-suite
   type: exitcode-stdio-1.0
   main-is: Main.hs
+  other-modules:
+      Test.EventSource.Store.GetEventStore
+      Paths_eventsource_geteventstore_store
   hs-source-dirs:
       test-suite
   ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
   build-depends:
-      base
-    , eventsource-api
+      aeson
+    , base >=4.9 && <5
+    , eventsource-api >=1.5
     , eventsource-geteventstore-store
-    , eventsource-store-specs ==1.*
-    , eventstore >=1.1
+    , eventsource-store-specs
+    , eventstore >=1.2
+    , lifted-async
+    , lifted-base
+    , mtl
     , protolude
+    , streaming
+    , string-conversions
     , tasty
     , tasty-hspec
-  other-modules:
-      Test.EventSource.Store.GetEventStore
-      Paths_eventsource_geteventstore_store
+    , transformers-base
   default-language: Haskell2010
diff --git a/library/EventSource/Store/GetEventStore.hs b/library/EventSource/Store/GetEventStore.hs
--- a/library/EventSource/Store/GetEventStore.hs
+++ b/library/EventSource/Store/GetEventStore.hs
@@ -17,18 +17,20 @@
   ( GetEventStore
   , gesConnection
   , gesStore
+  , fromGesEvent
   ) where
 
 --------------------------------------------------------------------------------
-import Control.Exception (try)
-
---------------------------------------------------------------------------------
 import           Control.Monad.Base (MonadBase, liftBase)
+import           Control.Monad.Except (withExceptT)
 import           Control.Monad.State.Strict (execState)
 import           Data.Aeson (encode, decodeStrict)
 import           Data.String.Conversions (convertString)
-import qualified Database.EventStore as GES
+import qualified Database.EventStore as GES hiding (ReadError, StreamDeleted, AccessDenied)
+import qualified Database.EventStore.Streaming as GES
 import           EventSource
+import           Streaming (hoist)
+import qualified Streaming.Prelude as Streaming
 
 --------------------------------------------------------------------------------
 newtype GetEventStore = GetEventStore { gesConnection :: GES.Connection }
@@ -77,6 +79,7 @@
             DataAsJson v -> GES.withJsonAndMetadata v p
 
 --------------------------------------------------------------------------------
+-- | Converts a GetEventStore event to a more abstract 'SavedEvent' event.
 fromGesEvent :: GES.ResolvedEvent -> SavedEvent
 fromGesEvent e@(GES.ResolvedEvent recEvt lnkEvt _) = saved
   where
@@ -102,30 +105,19 @@
                        }
 
 --------------------------------------------------------------------------------
-fromGesSlice :: GES.StreamSlice -> Slice
-fromGesSlice s = Slice { sliceEvents = fromGesEvent <$> GES.sliceEvents s
-                       , sliceEndOfStream = GES.sliceEOS s
-                       , sliceNextEventNumber = EventNumber $ GES.sliceNext s
-                       }
+toGESStreamName :: StreamName -> GES.StreamName
+toGESStreamName (StreamName name) = GES.StreamName name
 
 --------------------------------------------------------------------------------
-fromGesReadResult :: StreamName -> GES.ReadResult t a -> ReadStatus a
-fromGesReadResult _ (GES.ReadSuccess a) =
-  ReadSuccess a
-fromGesReadResult n GES.ReadNoStream =
-  ReadFailure $ StreamNotFound n
-fromGesReadResult n (GES.ReadStreamDeleted _) =
-  ReadFailure $ StreamNotFound n
-fromGesReadResult _ GES.ReadNotModified =
-  ReadFailure (ReadError $ Just "not modified")
-fromGesReadResult _ (GES.ReadError e) =
-  ReadFailure $ ReadError e
-fromGesReadResult n (GES.ReadAccessDenied _) =
-  ReadFailure $ AccessDenied n
+fromGESStreamName :: GES.StreamId t -> StreamName
+fromGESStreamName (GES.StreamName n) = StreamName n
+fromGESStreamName GES.All            = StreamName "$all"
 
 --------------------------------------------------------------------------------
-toGESStreamName :: StreamName -> GES.StreamName
-toGESStreamName (StreamName name) = GES.StreamName name
+fromGESError :: GES.ReadError t -> ReadFailure
+fromGESError (GES.StreamDeleted name) = StreamNotFound $ fromGESStreamName name
+fromGESError (GES.ReadError reason)   = ReadError reason
+fromGESError (GES.AccessDenied name)  = AccessDenied $ fromGESStreamName name
 
 --------------------------------------------------------------------------------
 instance Store GetEventStore where
@@ -135,18 +127,25 @@
           Nothing
     return $ fmap (EventNumber . GES.writeNextExpectedVersion) w
 
-  readBatch (GetEventStore conn) name b = liftBase $ do
+  readStream (GetEventStore conn) name b =
     let EventNumber n = batchFrom b
-    w <- GES.readStreamEventsForward conn (toGESStreamName name) n (batchSize b)
-          True Nothing
-    return $ fmap (fmap fromGesSlice . fromGesReadResult name) w
+        from = GES.rawEventNumber n
+        stream =
+          GES.readThroughForward conn
+            (toGESStreamName name) GES.ResolveLink from (Just $ batchSize b) Nothing
 
+     in hoist (hoist liftBase . withExceptT fromGESError)
+          $ Streaming.map fromGesEvent stream
+
   subscribe (GetEventStore conn) name = liftBase $ do
-    sub <- GES.subscribe conn (toGESStreamName name) True Nothing
+    sub <- GES.subscribe conn (toGESStreamName name) GES.ResolveLink Nothing
     sid <- freshSubscriptionId
 
-    return $ Subscription sid $ liftBase $
-      try $ fmap fromGesEvent $ GES.nextEvent sub
+    pure $ Subscription sid
+         $ Streaming.repeatM
+         $ liftBase
+         $ fmap fromGesEvent
+         $ GES.nextEvent sub
 
 --------------------------------------------------------------------------------
 -- | Returns a GetEventStore based store implementation.
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -9,16 +9,22 @@
 - package.yaml
 - README.md
 ghc-options: -Wall
-github: YoEight/eventsource-api
-library:
-  dependencies:
+homepage: https://gitlab.com/YoEight/eventsource-api-hs
+
+dependencies:
   - base >=4.9 && <5
-  - eventstore >=1.1
-  - eventsource-api >= 1.3
+  - eventstore >=1.2
+  - eventsource-api >= 1.5
   - aeson
   - mtl
   - transformers-base
   - string-conversions
+  - lifted-async
+  - lifted-base
+  - eventsource-store-specs
+  - streaming
+
+library:
   source-dirs: library
 license: BSD3
 license-file: LICENSE.md
@@ -29,11 +35,7 @@
 tests:
   geteventstore-store-test-suite:
     dependencies:
-    - base
     - eventsource-geteventstore-store
-    - eventsource-api
-    - eventsource-store-specs ==1.*
-    - eventstore >= 1.1
     - tasty
     - tasty-hspec
     - protolude
@@ -43,4 +45,4 @@
     - -with-rtsopts=-N
     main: Main.hs
     source-dirs: test-suite
-version: '1.1.0'
+version: '1.2.0'
