diff --git a/network-ip.cabal b/network-ip.cabal
--- a/network-ip.cabal
+++ b/network-ip.cabal
@@ -1,5 +1,5 @@
 Name: network-ip
-Version: 0.3.0.2
+Version: 0.3.0.3
 Category: Network
 Stability: experimental
 Synopsis: Internet Protocol data structures
@@ -18,7 +18,8 @@
 Extra-Source-Files:
   README.md
 
-Tested-With: GHC==7.10.3, GHC==8.0.2, GHC==8.2.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/Network/IP/Addr.hs b/src/Network/IP/Addr.hs
--- a/src/Network/IP/Addr.hs
+++ b/src/Network/IP/Addr.hs
@@ -98,7 +98,10 @@
 import qualified Data.Serializer as S
 import Data.Deserializer (Deserializer, Deserializable)
 import qualified Data.Deserializer as D
-import Text.Printer (Printer, (<>))
+import Text.Printer (Printer)
+#if !MIN_VERSION_base(4,13,0)
+import Text.Printer ((<>))
+#endif
 import qualified Text.Printer as P
 import qualified Text.Printer.Integral as P
 import Data.Textual
@@ -156,7 +159,7 @@
     where octet = (<?> "IPv4 octet") $ do
             o ← nnUpTo Decimal 3
             if o > 255
-              then fail "out of bounds"
+              then D.unexpected "out of bounds"
               else return $ fromIntegral (o ∷ Int)
 
 instance Storable IP4 where
@@ -767,7 +770,7 @@
 ip4Mask ∷ (CharParsing μ, Monad μ) ⇒ μ Word8
 ip4Mask = (<?> "network prefix length") $ do
   m ← nncUpTo Decimal 2
-  when (m > 32) $ fail "out of bounds"
+  when (m > 32) $ D.unexpected "out of bounds"
   return m
 
 -- | IPv4 network address parser (CIDR notation).
@@ -779,7 +782,7 @@
 ip6Mask ∷ (CharParsing μ, Monad μ) ⇒ μ Word8
 ip6Mask = (<?> "network prefix length") $ do
   m ← nncUpTo Decimal 3
-  when (m > (128 ∷ Int)) $ fail "out of bounds"
+  when (m > (128 ∷ Int)) $ D.unexpected "out of bounds"
   return $ fromIntegral m
 
 -- | IPv6 network address parser (CIDR notation).
diff --git a/tests/Tests.hs b/tests/Tests.hs
--- a/tests/Tests.hs
+++ b/tests/Tests.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UnicodeSyntax #-}
 {-# LANGUAGE MultiWayIf #-}
 {-# LANGUAGE TypeSynonymInstances #-}
@@ -11,7 +12,9 @@
 import Data.DoubleWord
 import Data.Textual
 import Network.IP.Addr
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative
+#endif
 
 instance Arbitrary IP4 where
   arbitrary = IP4 <$> arbitrary
