diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # dir-traverse
 
+## 0.2.0.0
+
+  * Remove dependency on `dlist` and `composition-prelude`
+  * Expand support through GHC 7.0.4
+
 ## 0.1.0.0
 
 Initial release
diff --git a/dir-traverse.cabal b/dir-traverse.cabal
--- a/dir-traverse.cabal
+++ b/dir-traverse.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: dir-traverse
-version: 0.1.0.0
+version: 0.2.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2019 Vanessa McHale
@@ -25,11 +25,8 @@
     default-language: Haskell2010
     ghc-options: -Wall -O2
     build-depends:
-        base >=4.5 && <5,
-        dlist -any,
-        directory >=1.2.5.0,
-        composition-prelude -any,
-        filepath -any
+        base >=4.3 && <5,
+        directory -any
 
     if impl(ghc >=8.0)
         ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
diff --git a/src/System/Directory/Recursive.hs b/src/System/Directory/Recursive.hs
--- a/src/System/Directory/Recursive.hs
+++ b/src/System/Directory/Recursive.hs
@@ -1,25 +1,28 @@
 module System.Directory.Recursive ( getDirRecursive ) where
 
 import           Control.Applicative (pure, (<$>))
-import           Control.Composition ((.*))
 import           Control.Monad       (filterM)
-import qualified Data.DList          as DL
 import           Data.Foldable       (fold)
 import           Data.Traversable    (traverse)
-import           System.Directory    (doesDirectoryExist, listDirectory)
-import           System.FilePath     ((</>))
+import           System.Directory    (doesDirectoryExist, getDirectoryContents)
+import           System.Info         (os)
 
 {-# INLINE getDirRecursive #-}
-getDirRecursive :: FilePath -> IO (DL.DList FilePath)
+getDirRecursive :: FilePath -> IO [FilePath]
 getDirRecursive fp = do
     all' <- listDirectory fp
     let all'' = mkRel <$> all'
     dirs <- filterM doesDirectoryExist all''
     case dirs of
-        [] -> pure $ DL.fromList all''
+        [] -> pure $ all''
         ds -> do
             next <- foldMapA getDirRecursive ds
-            pure $ next `DL.append` DL.fromList all''
+            pure $ next ++ all''
 
-    where foldMapA = fmap fold .* traverse
+    where foldMapA = (fmap fold .) . traverse
           mkRel = (fp </>)
+          (</>) x y =
+            case os of
+                "mingw32" -> x ++ "\\" ++ y
+                _         -> x ++ "/" ++ y
+          listDirectory = fmap (filter (\p -> p /= "." && p /= "..")) . getDirectoryContents
