diff --git a/ipfs.cabal b/ipfs.cabal
--- a/ipfs.cabal
+++ b/ipfs.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           ipfs
-version:        1.3.0.0
+version:        1.3.0.1
 synopsis:       Access IPFS locally and remotely
 description:    Interact with the IPFS network by shelling out to a local IPFS node or communicating via the HTTP interface of a remote IPFS node.
 category:       Network
@@ -22,9 +22,9 @@
 copyright:      © 2021 Fission Internet Software Services for Open Networks Inc.
 license:        Apache-2.0
 license-file:   LICENSE
+build-type:     Simple
 tested-with:
     GHC==8.10.4
-build-type:     Simple
 extra-source-files:
     README.md
 
@@ -143,9 +143,9 @@
     , envy
     , flow
     , http-media
-    , ip
     , lens
     , monad-logger
+    , network-ip
     , regex-compat
     , rio
     , servant
@@ -220,10 +220,10 @@
     , envy
     , flow
     , http-media
-    , ip
     , lens
     , lens-aeson
     , monad-logger
+    , network-ip
     , regex-compat
     , rio
     , servant
diff --git a/library/Network/IPFS/Peer.hs b/library/Network/IPFS/Peer.hs
--- a/library/Network/IPFS/Peer.hs
+++ b/library/Network/IPFS/Peer.hs
@@ -9,7 +9,8 @@
 import qualified RIO.List                   as List
 import qualified RIO.Text                   as Text
 
-import qualified Net.IPv4                   as IPv4
+import qualified Network.IP.Addr            as Addr
+
 import           Text.Regex
 
 import qualified Network.IPFS.Internal.UTF8 as UTF8
@@ -22,34 +23,23 @@
 import qualified Network.IPFS.Process.Error as Process
 import qualified Network.IPFS.Types         as IPFS
 
-all ::
-  MonadLocalIPFS m
-  => m (Either IPFS.Peer.Error [IPFS.Peer])
+all :: MonadLocalIPFS m => m (Either IPFS.Peer.Error [IPFS.Peer])
 all = rawList <&> \case
   Right raw -> case UTF8.encode raw of
     Left  _    -> Left  . DecodeFailure $ show raw
     Right text -> Right $ IPFS.Peer <$> Text.lines text
   Left err -> Left . UnknownErr $ UTF8.textShow err
 
-rawList ::
-  MonadLocalIPFS m
-  => m (Either Process.Error Process.RawMessage)
+rawList :: MonadLocalIPFS m => m (Either Process.Error Process.RawMessage)
 rawList = IPFS.runLocal ["bootstrap", "list"] ""
 
-connect ::
-  MonadLocalIPFS m
-  => Peer
-  -> m (Either IPFS.Peer.Error ())
+connect :: MonadLocalIPFS m => Peer -> m (Either IPFS.Peer.Error ())
 connect peer@(Peer peerID) = IPFS.runLocal ["swarm", "connect"] (UTF8.textToLazyBS peerID) >>= pure . \case
   Left _  -> Left $ CannotConnect peer
   Right _ -> Right ()
 
-connectRetry ::
-  MonadLocalIPFS m
-  => Peer
-  -> Int
-  -> m (Either IPFS.Peer.Error ())
-connectRetry peer (-1) = return . Left <| CannotConnect peer
+connectRetry :: MonadLocalIPFS m => Peer -> Natural -> m (Either IPFS.Peer.Error ())
+connectRetry peer 0 = return . Left $ CannotConnect peer
 connectRetry peer tries = connect peer >>= \case
   Right _   -> return $ Right ()
   Left _err -> connectRetry peer (tries - 1)
@@ -68,22 +58,23 @@
     isReserved :: Maybe Bool
     isReserved = do
       ipAddress  <- extractIPfromPeerAddress $ Text.unpack ip
-      normalized <- IPv4.decode $ Text.pack ipAddress
-      return $ IPv4.reserved normalized
+      normalized <- readMaybe ipAddress
+      return (Addr.ip4Range normalized == Addr.ReservedIP4)
 
 -- | Filter a list of peers to include only the externally accessable addresses
 filterExternalPeers :: [Peer] -> [Peer]
 filterExternalPeers = filter (isExternalIPv4 . peer)
 
 -- | Get all external ipfs peer addresses
-getExternalAddress ::
-  MonadLocalIPFS m
-  => m (Either IPFS.Peer.Error [Peer])
-getExternalAddress = IPFS.runLocal ["id"] "" >>= \case
-  Left err -> return . Left . UnknownErr $ UTF8.textShow err
-  Right raw ->
-    raw
-      |> decode
-      |> maybe [] addresses
-      |> Right . filterExternalPeers
-      |> pure
+getExternalAddress :: MonadLocalIPFS m => m (Either IPFS.Peer.Error [Peer])
+getExternalAddress =
+  IPFS.runLocal ["id"] "" >>= \case
+    Left err ->
+      return . Left . UnknownErr $ UTF8.textShow err
+
+    Right raw ->
+      raw
+        |> decode
+        |> maybe [] addresses
+        |> Right . filterExternalPeers
+        |> pure
