diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+# 1.0.0
+
+* Drop system-filepath/system-fileio
+
 # 0.3.1
 
 * `peekForever`
diff --git a/Data/Conduit/Combinators.hs b/Data/Conduit/Combinators.hs
--- a/Data/Conduit/Combinators.hs
+++ b/Data/Conduit/Combinators.hs
@@ -213,15 +213,14 @@
 import qualified Data.Vector.Generic         as V
 import qualified Data.Vector.Generic.Mutable as VM
 import           Data.Void                   (absurd)
-import qualified Filesystem                  as F
-import           Filesystem.Path             (FilePath, (</>))
-import           Filesystem.Path.CurrentOS   (encodeString, decodeString)
+import qualified System.FilePath             as F
+import           System.FilePath             ((</>))
 import           Prelude                     (Bool (..), Eq (..), Int,
                                               Maybe (..), Monad (..), Num (..),
                                               Ord (..), fromIntegral, maybe,
                                               ($), Functor (..), Enum, seq, Show, Char, (||),
                                               mod, otherwise, Either (..),
-                                              ($!), succ)
+                                              ($!), succ, FilePath)
 import Data.Word (Word8)
 import qualified Prelude
 import           System.IO                   (Handle)
@@ -411,7 +410,7 @@
 --
 -- Since 1.0.0
 sourceFile :: (MonadResource m, IOData a) => FilePath -> Producer m a
-sourceFile fp = sourceIOHandle (F.openFile fp SIO.ReadMode)
+sourceFile fp = sourceIOHandle (SIO.openFile fp SIO.ReadMode)
 {-# INLINE sourceFile #-}
 
 -- | Read all data from the given @Handle@.
@@ -505,7 +504,7 @@
 --
 -- Since 1.0.0
 sourceDirectory :: MonadResource m => FilePath -> Producer m FilePath
-sourceDirectory = mapOutput decodeString . CF.sourceDirectory . encodeString
+sourceDirectory = CF.sourceDirectory
 
 -- | Deeply stream the contents of the given directory.
 --
@@ -518,7 +517,7 @@
                     => Bool -- ^ Follow directory symlinks
                     -> FilePath -- ^ Root directory
                     -> Producer m FilePath
-sourceDirectoryDeep follow = mapOutput decodeString . CF.sourceDirectoryDeep follow . encodeString
+sourceDirectoryDeep = CF.sourceDirectoryDeep
 
 -- | Ignore a certain number of values in the stream.
 --
@@ -1218,7 +1217,7 @@
 --
 -- Since 1.0.0
 sinkFile :: (MonadResource m, IOData a) => FilePath -> Consumer a m ()
-sinkFile fp = sinkIOHandle (F.openFile fp SIO.WriteMode)
+sinkFile fp = sinkIOHandle (SIO.openFile fp SIO.WriteMode)
 {-# INLINE sinkFile #-}
 
 -- | Print all incoming values to stdout.
diff --git a/Data/Conduit/Combinators/Unqualified.hs b/Data/Conduit/Combinators/Unqualified.hs
--- a/Data/Conduit/Combinators/Unqualified.hs
+++ b/Data/Conduit/Combinators/Unqualified.hs
@@ -199,15 +199,14 @@
 import qualified Data.Vector.Generic         as V
 import qualified Data.Vector.Generic.Mutable as VM
 import           Data.Void                   (absurd)
-import qualified Filesystem                  as F
-import           Filesystem.Path             (FilePath, (</>))
-import           Filesystem.Path.CurrentOS   (encodeString, decodeString)
+import qualified System.FilePath             as F
+import           System.FilePath             ((</>))
 import           Prelude                     (Bool (..), Eq (..), Int,
                                               Maybe (..), Monad (..), Num (..),
                                               Ord (..), fromIntegral, maybe,
                                               ($), Functor (..), Enum, seq, Show, Char, (||),
                                               mod, otherwise, Either (..),
-                                              ($!), succ)
+                                              ($!), succ, FilePath)
 import Data.Word (Word8)
 import qualified Prelude
 import           System.IO                   (Handle)
diff --git a/conduit-combinators.cabal b/conduit-combinators.cabal
--- a/conduit-combinators.cabal
+++ b/conduit-combinators.cabal
@@ -1,5 +1,5 @@
 name:                conduit-combinators
-version:             0.3.1
+version:             1.0.0
 synopsis:            Commonly used conduit functions, for both chunked and unchunked data
 description:         Provides a replacement for Data.Conduit.List, as well as a convenient Conduit module.
 homepage:            https://github.com/fpco/conduit-combinators
@@ -27,8 +27,6 @@
                      , primitive
                      , mono-traversable >= 0.4
                      , vector
-                     , system-fileio
-                     , system-filepath
                      , text
                      , bytestring
                      , void
@@ -38,6 +36,7 @@
                      , base64-bytestring        >= 0.1.1.1
                      , resourcet
                      , monad-control
+                     , filepath
   if os(windows)
       cpp-options:     -DWINDOWS
   else
@@ -64,13 +63,13 @@
                 , mwc-random
                 , base16-bytestring
                 , base64-bytestring
-                , system-filepath
                 , mtl
                 , conduit
                 , containers
                 , safe
                 , QuickCheck >= 2.5
                 , directory
+                , filepath
   ghc-options:    -Wall
 
 source-repository head
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -9,8 +9,7 @@
 import Data.Conduit.Combinators.Internal
 import Data.Conduit.Combinators (slidingWindow)
 import Data.List (intersperse, sort, find)
-import Filesystem.Path (hasExtension)
-import Filesystem.Path.CurrentOS (encodeString)
+import System.FilePath (takeExtension)
 import Test.Hspec
 import Test.Hspec.QuickCheck
 import qualified Data.Text as T
@@ -107,7 +106,7 @@
     it "sourceFile" $ do
         let contents = concat $ replicate 10000 $ "this is some content\n"
             fp = "tmp"
-        writeFile (encodeString fp) contents
+        writeFile fp contents
         res <- runResourceT $ sourceFile fp $$ sinkLazy
         res `shouldBe` TL.pack contents
     it "sourceHandle" $ do
@@ -143,15 +142,16 @@
         gen <- createSystemRandom
         x <- sourceRandomNGen gen 100 $$ sumC :: IO Double
         x `shouldSatisfy` (\y -> y > 10 && y < 90)
+    let hasExtension' ext fp = takeExtension fp == ext
     it "sourceDirectory" $ do
         res <- runResourceT
-             $ sourceDirectory "test" $$ filterC (not . flip hasExtension "swp") =$ sinkList
+             $ sourceDirectory "test" $$ filterC (not . hasExtension' ".swp") =$ sinkList
         sort res `shouldBe` ["test/Spec.hs", "test/StreamSpec.hs", "test/subdir"]
     it "sourceDirectoryDeep" $ do
         res1 <- runResourceT
-              $ sourceDirectoryDeep False "test" $$ filterC (not . flip hasExtension "swp") =$ sinkList
+              $ sourceDirectoryDeep False "test" $$ filterC (not . hasExtension' ".swp") =$ sinkList
         res2 <- runResourceT
-              $ sourceDirectoryDeep True "test" $$ filterC (not . flip hasExtension "swp") =$ sinkList
+              $ sourceDirectoryDeep True "test" $$ filterC (not . hasExtension' ".swp") =$ sinkList
         sort res1 `shouldBe` ["test/Spec.hs", "test/StreamSpec.hs", "test/subdir/dummyfile.txt"]
         sort res1 `shouldBe` sort res2
     prop "drop" $ \(T.pack -> input) count ->
@@ -325,7 +325,7 @@
         let contents = concat $ replicate 1000 $ "this is some content\n"
             fp = "tmp"
         runResourceT $ yield contents $$ sinkFile fp
-        res <- readFile $ encodeString fp
+        res <- readFile fp
         res `shouldBe` contents
     it "sinkHandle" $ do
         let contents = concat $ replicate 1000 $ "this is some content\n"
