diff --git a/archive-libarchive.cabal b/archive-libarchive.cabal
--- a/archive-libarchive.cabal
+++ b/archive-libarchive.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name:          archive-libarchive
-version:       0.2.2.2
+version:       1.0.0.0
 license:       BSD3
 license-file:  LICENSE
 copyright:     Copyright: (c) 2019-2020 Vanessa McHale
@@ -31,7 +31,7 @@
     ghc-options:        -Wall
     build-depends:
         base >=4.3 && <5,
-        libarchive >=2.2.1.0,
+        libarchive >=2.2.5.0,
         bytestring -any,
         composition-prelude -any
 
@@ -45,3 +45,6 @@
 
     if impl(ghc >=8.4)
         ghc-options: -Wmissing-export-lists
+
+    if impl(ghc >=8.10)
+        ghc-options: -Wunused-packages
diff --git a/src/Archive/FFI.cpphs b/src/Archive/FFI.cpphs
--- a/src/Archive/FFI.cpphs
+++ b/src/Archive/FFI.cpphs
@@ -1,16 +1,17 @@
 module Archive.FFI ( Entry
                    , Error
+                   , FP
                    , readArchiveBytes
-                   , unpackToDir
+                   , unpackToDirRaw
                    , writeArchiveBytes
-                   , packFiles
+                   , packFilesRaw
                    , versionInfo
+                   , toFP
                    ) where
 
 import qualified Codec.Archive                 as FFI
 import           Codec.Archive.Foreign.Archive (archiveVersionString)
 import           Control.Composition           ((.*))
-import           Control.Exception             (throw)
 import qualified Data.ByteString.Lazy          as BSL
 import qualified Data.Version                  as V
 import qualified Paths_archive_libarchive      as P
@@ -19,17 +20,22 @@
 
 type Error = FFI.ArchiveResult
 
+type FP = FilePath
+
+toFP :: FilePath -> FP
+toFP = id
+
 writeArchiveBytes :: [Entry] -> BSL.ByteString
 writeArchiveBytes = FFI.entriesToBSL
 
 readArchiveBytes :: BSL.ByteString -> Either Error [Entry]
 readArchiveBytes = FFI.readArchiveBSL
 
-unpackToDir :: FilePath -> BSL.ByteString -> IO ()
-unpackToDir = fmap (either throw id) .* FFI.runArchiveM .* FFI.unpackToDirLazy
+unpackToDirRaw :: FP -> BSL.ByteString -> IO ()
+unpackToDirRaw = FFI.throwArchiveM .* FFI.unpackToDirLazy
 
-packFiles :: [FilePath] -> IO BSL.ByteString
-packFiles = FFI.packFiles
+packFilesRaw :: [FP] -> IO BSL.ByteString
+packFilesRaw = FFI.packFiles
 
 -- | @since 0.2.2.0
 versionInfo :: String
