diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,9 @@
+## 1.0.4
+
+* Increased the upper-bound of `base`, `snap-core`, `websockets` and `websockets-snap`.
+* Snap 1.0 is now required.
+* Use `lifted-base` instead of `MonadCatchIO-transformers`.
+
 ## 1.0.3
 
 * Increased the upper-bound of base to allow < 4.9. Now builds on
diff --git a/engine-io-snap.cabal b/engine-io-snap.cabal
--- a/engine-io-snap.cabal
+++ b/engine-io-snap.cabal
@@ -1,5 +1,5 @@
 name: engine-io-snap
-version: 1.0.3
+version: 1.0.4
 homepage: http://github.com/ocharles/engine.io
 license: BSD3
 license-file: LICENSE
@@ -17,16 +17,16 @@
     Network.EngineIO.Snap
 
   build-depends:
-    attoparsec-enumerator >= 0.3 && <0.4,
-    base >=4.6 && <4.9,
+    io-streams >= 1.0.0.0 && < 1.4,
+    base >=4.6 && <4.10,
     bytestring >= 0.9 && <0.11,
     containers >=0.5 && <0.6,
     engine-io >= 1.2 && <1.3,
-    MonadCatchIO-transformers >= 0.2.1 && < 0.4,
-    snap-core >= 0.9 && <0.10,
+    lifted-base >= 0.1 && < 0.3,
+    snap-core >= 1.0 && < 1.1,
     unordered-containers >= 0.2 && <0.3,
-    websockets >=0.8 && <0.10,
-    websockets-snap >= 0.9 && <0.10
+    websockets >=0.8 && <0.11,
+    websockets-snap >= 0.9 && <0.11
 
   hs-source-dirs: src
   default-language: Haskell2010
diff --git a/src/Network/EngineIO/Snap.hs b/src/Network/EngineIO/Snap.hs
--- a/src/Network/EngineIO/Snap.hs
+++ b/src/Network/EngineIO/Snap.hs
@@ -1,10 +1,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Network.EngineIO.Snap (snapAPI) where
 
-import Control.Applicative
-
-import qualified Control.Monad.CatchIO as MonadCatchIO
-import qualified Data.Attoparsec.Enumerator as Attoparsec
+import qualified Control.Exception.Lifted as MonadCatchIO
+import qualified System.IO.Streams.Attoparsec as IOStreams
 import qualified Data.ByteString.Builder as Builder
 import qualified Data.HashMap.Strict as HashMap
 import qualified Data.Map.Lazy as LMap
@@ -27,9 +25,9 @@
         <$> Snap.getQueryParams
 
   , EIO.srvParseRequestBody =
-      fmap (either (\e@Attoparsec.ParseError{} -> Left (show e))
+      fmap (either (\e@IOStreams.ParseException{} -> Left (show e))
                    Right) .
-      MonadCatchIO.try . Snap.runRequestBody . Attoparsec.iterParser
+      MonadCatchIO.try . Snap.runRequestBody . IOStreams.parseFromStream
 
   , EIO.srvGetRequestMethod = do
       m <- Snap.getsRequest Snap.rqMethod
