diff --git a/asif.cabal b/asif.cabal
--- a/asif.cabal
+++ b/asif.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.2
 name:           asif
-version:        6.0.1
+version:        6.0.3
 description:    Library for creating and querying segmented feeds. Please see <https://github.com/arbor/asif#readme>
 synopsis:       Library for creating and querying segmented feeds
 category:       Services
@@ -38,7 +38,7 @@
     , foldl
     , generic-lens
     , hw-bits
-    , hw-ip
+    , hw-ip >= 2.3.2.0
     , lens
     , network
     , old-locale
@@ -118,6 +118,7 @@
   import: common-deps
   type: exitcode-stdio-1.0
   main-is: Spec.hs
+  build-tool-depends: hspec-discover:hspec-discover
   other-modules:
     Arbor.File.Format.Asif.ByteString.BuilderSpec
     Arbor.File.Format.Asif.Data.IpSpec
diff --git a/test/Arbor/File/Format/Asif/WriteSpec.hs b/test/Arbor/File/Format/Asif/WriteSpec.hs
--- a/test/Arbor/File/Format/Asif/WriteSpec.hs
+++ b/test/Arbor/File/Format/Asif/WriteSpec.hs
@@ -1,3 +1,6 @@
+{-# LANGUAGE CPP   #-}
+{-# LANGUAGE GADTs #-}
+
 module Arbor.File.Format.Asif.WriteSpec where
 
 import Arbor.File.Format.Asif.Data.Ip
@@ -6,11 +9,10 @@
 import Arbor.File.Format.Asif.Write
 import Control.Lens
 import Control.Monad.IO.Class                (liftIO)
-import Control.Monad.Trans.Class
 import Control.Monad.Trans.Resource
 import Data.Int
 import Data.List                             (elemIndex, nub)
-import Data.Maybe                            (catMaybes, fromMaybe)
+import Data.Maybe                            (fromMaybe)
 import Data.Semigroup                        ((<>))
 import Data.Word
 import HaskellWorks.Data.Network.Ip.Validity (Canonical)
@@ -24,7 +26,6 @@
 import qualified Data.ByteString.Lazy              as LBS
 import qualified Data.Text.Lazy                    as T
 import qualified Data.Text.Lazy.Encoding           as T
-import qualified Data.Thyme.Clock.POSIX            as TY
 import qualified Data.Thyme.Time.Core              as TY
 import qualified HaskellWorks.Data.Network.Ip.Ipv4 as IP4
 import qualified HaskellWorks.Data.Network.Ip.Ipv6 as IP6
@@ -33,9 +34,6 @@
 
 import qualified System.IO as IO
 
-import Debug.Trace
-
-
 {-# ANN module ("HLint: ignore Redundant do"  :: String) #-}
 
 spec :: Spec
@@ -270,24 +268,25 @@
 
     content <- asifContent "ipct" Nothing resFold pairs
 
-    let Right segments = extractSegments (AP.string "seg:ipct") content
-
-    [names, times, types, ips, lkp, dict] <- forAll $ pure (segmentValues <$> segments)
+    case extractSegments (AP.string "seg:ipct") content of
+      Right segments -> do
+        [names, times, types, ips, lkp, dict] <- forAll $ pure (segmentValues <$> segments)
 
-    let expectedVals    = pairs ^.. each . _2 . _Just & nub
-    let expectedLkpVals = pairs ^.. each . _2 . to (\x -> x >>= flip elemIndex expectedVals) . to (fromMaybe maxBound)
+        let expectedVals    = pairs ^.. each . _2 . _Just & nub
+        let expectedLkpVals = pairs ^.. each . _2 . to (\x -> x >>= flip elemIndex expectedVals) . to (fromMaybe maxBound)
 
-    expectedDict <- forAll . pure $
-      expectedVals <&> (SString . T.encodeUtf8 . T.fromStrict)
+        expectedDict <- forAll . pure $
+          expectedVals <&> (SString . T.encodeUtf8 . T.fromStrict)
 
-    expectedLkp <- forAll . pure $
-      expectedLkpVals <&> (SWord16 . fromIntegral)
+        expectedLkp <- forAll . pure $
+          expectedLkpVals <&> (SWord16 . fromIntegral)
 
-    dict === expectedDict
-    lkp  === expectedLkp
+        dict === expectedDict
+        lkp  === expectedLkp
+      Left _ -> failure
 
 
-genTriple :: MonadGen m => m (Int64, Word16, T.Text)
+genTriple :: (MonadGen m, GenBase m ~ Identity) => m (Int64, Word16, T.Text)
 genTriple
   = (,,)
   <$> G.int64 R.linearBounded
@@ -317,13 +316,18 @@
   mask <- IP6.IpNetMask <$> G.word8 (R.linear 0 128)
   pure . IP6.canonicaliseIpBlock $ IP6.IpBlock ip mask
 
-genNonNullText :: MonadGen m => m T.Text
+#if MIN_VERSION_hedgehog(1, 0, 0)
+genNonNullText :: (MonadGen m, GenBase m ~ Identity) => m T.Text
 genNonNullText =
   T.fromStrict <$> G.text (R.linear 0 32) (G.filter (/= toEnum 0) G.unicode)
-
+#else
+#endif
 
+#if MIN_VERSION_hedgehog(1, 0, 0)
+#else
 instance MonadResource m => MonadResource (PropertyT m) where
   liftResourceT = lift . liftResourceT
+#endif
 
 -- I have no idea how this doesn't exist, but whatever. ¯\_(ツ)_/¯
 instance MonadResource IO where
diff --git a/test/Gen/Feed.hs b/test/Gen/Feed.hs
--- a/test/Gen/Feed.hs
+++ b/test/Gen/Feed.hs
@@ -6,7 +6,7 @@
   ) where
 
 import Data.Word
-import HaskellWorks.Data.Network.Ip.Internal
+import HaskellWorks.Data.Network.Ip.Internal.Appar
 import HaskellWorks.Data.Network.Ip.Ipv4
 import Hedgehog
 
