diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 1.0.0.0
+
+  * Add `FP` type to allow the filepath type to be abstract
+  * Add `toFP`, `packFromFilesRaw`, `unpackToDirRaw`
+  * Move `packFromFiles`, `unpackToDir` to `Archive.Compression`
+
 # 0.2.3.0
 
   * Add `archiveSigVersion` function
diff --git a/archive-sig.cabal b/archive-sig.cabal
--- a/archive-sig.cabal
+++ b/archive-sig.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.0
 name:            archive-sig
-version:         0.2.3.0
+version:         1.0.0.0
 license:         BSD3
 license-file:    LICENSE
 copyright:       Copyright: (c) 2019-2020 Vanessa McHale
@@ -51,3 +51,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.hsig b/src/Archive.hsig
--- a/src/Archive.hsig
+++ b/src/Archive.hsig
@@ -1,25 +1,42 @@
 signature Archive ( Entry
                   , Error
-                  , unpackToDir
+                  , FP
+                  , unpackToDirRaw
                   , readArchiveBytes
-                  , packFiles
+                  , packFilesRaw
                   , writeArchiveBytes
                   , versionInfo
+                  , toFP
                   ) where
 
+import Control.Exception (Exception)
 import qualified Data.ByteString.Lazy as BSL
 
 data Entry
 
 data Error
 
+-- | The type for filepaths used by the library
+--
+-- @since 1.0.0.0
+data FP
+
 instance Show Error
 
--- | @since 0.2.0.0
-packFiles :: [FilePath] -- ^ Files and directories to write to archive
-          -> IO BSL.ByteString -- ^ 'BSL.ByteString' containing archive
+-- | @since 1.0.0.0
+instance Exception Error
 
-unpackToDir :: FilePath -> BSL.ByteString -> IO ()
+-- | Function to get an 'FP' from a 'FilePath'. May throw exceptions if need be.
+--
+-- @since 1.0.0.0
+toFP :: FilePath -> FP
+
+-- @since 1.0.0.0
+packFilesRaw :: [FP] -- ^ Files and directories to write to archive
+             -> IO BSL.ByteString -- ^ 'BSL.ByteString' containing archive
+
+-- @since 1.0.0.0
+unpackToDirRaw :: FP -> BSL.ByteString -> IO ()
 
 readArchiveBytes :: BSL.ByteString -> Either Error [Entry]
 
diff --git a/src/Archive/Compression.hs b/src/Archive/Compression.hs
--- a/src/Archive/Compression.hs
+++ b/src/Archive/Compression.hs
@@ -14,6 +14,15 @@
 type Decompressor = BSL.ByteString -> BSL.ByteString
 type Compressor = BSL.ByteString -> BSL.ByteString
 
+-- | @since 1.0.0.0
+packFiles :: [FilePath] -- ^ Files and directories to write to archive
+          -> IO BSL.ByteString -- ^ 'BSL.ByteString' containing archive
+packFiles = packFilesRaw . fmap toFP
+
+-- | @since 1.0.0.0
+unpackToDir :: FilePath -> BSL.ByteString -> IO ()
+unpackToDir = unpackToDirRaw . toFP
+
 -- | @since 0.2.0.0
 unpackFileToDirAndDecompress :: Decompressor -- ^ Decompression to use
                              -> FilePath -- ^ Filepath pointing to archive
@@ -35,6 +44,7 @@
 packSrcDirAndCompress :: Compressor -> FilePath -> FilePath -> IO ()
 packSrcDirAndCompress f dir tar = packFromFilesAndCompress f tar =<< getDirFiltered (pure.srcFilter) dir
 
+-- FIXME: isInfixOf?
 srcFilter :: FilePath -> Bool
 srcFilter fp | ".git" `isSuffixOf` fp = False
              | "_darcs" `isSuffixOf` fp = False
diff --git a/src/Archive/Generic.hs b/src/Archive/Generic.hs
--- a/src/Archive/Generic.hs
+++ b/src/Archive/Generic.hs
@@ -9,10 +9,12 @@
 import           Archive
 import           Archive.Compression
 import           Control.Composition  ((.@))
+import           Control.Exception    (throw)
 import qualified Data.ByteString.Lazy as BSL
 import qualified Data.Version         as V
 import qualified Paths_archive_sig    as P
 
+
 -- | @since 0.2.3.0
 archiveSigVersion :: V.Version
 archiveSigVersion = P.version
@@ -26,7 +28,7 @@
 packToFile = writeArchiveBytes .@ BSL.writeFile
 
 unpackFromFile :: FilePath -> IO [Entry]
-unpackFromFile = fmap (either (error . show) id . readArchiveBytes) . BSL.readFile
+unpackFromFile = fmap (either throw id . readArchiveBytes) . BSL.readFile
 
 unpackFileToDir :: FilePath -- ^ Filepath pointing to archive
                 -> FilePath -- ^ Directory
