diff --git a/data-serializer.cabal b/data-serializer.cabal
--- a/data-serializer.cabal
+++ b/data-serializer.cabal
@@ -1,5 +1,5 @@
 Name: data-serializer
-Version: 0.3.4
+Version: 0.3.4.1
 Category: Data
 Stability: experimental
 Synopsis: Common API for serialization libraries
@@ -20,7 +20,8 @@
 Extra-Source-Files:
   README.md
 
-Tested-With: GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.1
+Tested-With: GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5,
+             GHC==8.8.1
 
 Cabal-Version: >= 1.10.0
 Build-Type: Simple
diff --git a/src/Data/Deserializer.hs b/src/Data/Deserializer.hs
--- a/src/Data/Deserializer.hs
+++ b/src/Data/Deserializer.hs
@@ -95,8 +95,10 @@
 import Data.List.Split (splitOn)
 import Text.Parser.Combinators
 import Text.Parser.LookAhead
-import Control.Applicative (Applicative(..), Alternative,
-                            (<$>), (<$), (<*>), (*>), (<|>))
+#if !MIN_VERSION_base(4,8,0)
+import Control.Applicative (Applicative(..), (<$>), (<$), (<*>), (*>))
+#endif
+import Control.Applicative (Alternative, (<|>))
 import Control.Monad (unless)
 
 -- | Deserialization monad.
@@ -243,7 +245,7 @@
   skipMany p = ((True <$ p) <|> pure False) >>= \case
                  True  → skipMany p
                  False → return ()
-  unexpected = fail
+  unexpected = BinaryDeserializer . fail
   {-# INLINE unexpected #-}
   eof = BinaryDeserializer
       $ B.isEmpty >>= \case
@@ -312,7 +314,7 @@
   skipMany p = ((True <$ p) <|> pure False) >>= \case
                  True  → skipMany p
                  False → return ()
-  unexpected = fail
+  unexpected = CerealDeserializer . fail
   {-# INLINE unexpected #-}
   eof = CerealDeserializer
       $ ((False <$ S.lookAheadM (Nothing <$ S.getWord8)) <|>
