diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.4.13.2
+
+* update `splitDirectories` function [#4](https://github.com/fpco/haskell-filesystem/pull/4)
+
 ## 0.4.13.1
 
 Allow deepseq 1.4
diff --git a/lib/Filesystem/Path.hs b/lib/Filesystem/Path.hs
--- a/lib/Filesystem/Path.hs
+++ b/lib/Filesystem/Path.hs
@@ -301,18 +301,11 @@
 splitDirectories p = rootName ++ dirNames ++ fileName where
 	rootName = case pathRoot p of
 		Nothing -> []
-		r -> [asFile (rootChunk r)]
-	dirNames = map asFile (pathDirectories p)
+		r -> [empty { pathRoot = r }]
+	dirNames = map (\d -> empty { pathDirectories = [d] }) (pathDirectories p)
 	fileName = case (pathBasename p, pathExtensions p) of
 		(Nothing, []) -> []
 		_ -> [filename p]
-	
-	asFile :: Chunk -> FilePath
-	asFile c = case parseFilename c of
-		(base, exts) -> empty
-			{ pathBasename = base
-			, pathExtensions = exts
-			}
 
 -------------------------------------------------------------------------------
 -- Extensions
diff --git a/system-filepath.cabal b/system-filepath.cabal
--- a/system-filepath.cabal
+++ b/system-filepath.cabal
@@ -1,5 +1,5 @@
 name: system-filepath
-version: 0.4.13.1
+version: 0.4.13.2
 synopsis: High-level, byte-based file and directory path manipulations
 description: Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/system-filepath>.
 license: MIT
diff --git a/tests/FilesystemPathTests.hs b/tests/FilesystemPathTests.hs
--- a/tests/FilesystemPathTests.hs
+++ b/tests/FilesystemPathTests.hs
@@ -353,18 +353,19 @@
 
 test_SplitDirectories :: Test
 test_SplitDirectories = assertions "splitDirectories" $ do
-	let splitDirectories x = map toChar8 (P.splitDirectories (fromChar8 x))
-	
-	$expect $ equal (splitDirectories "") []
-	$expect $ equal (splitDirectories "/") ["/"]
-	$expect $ equal (splitDirectories "/a") ["/", "a"]
-	$expect $ equal (splitDirectories "/ab/cd") ["/", "ab", "cd"]
-	$expect $ equal (splitDirectories "/ab/cd/") ["/", "ab", "cd"]
-	$expect $ equal (splitDirectories "ab/cd") ["ab", "cd"]
-	$expect $ equal (splitDirectories "ab/cd/") ["ab", "cd"]
-	$expect $ equal (splitDirectories "ab/cd.txt") ["ab", "cd.txt"]
-	$expect $ equal (splitDirectories "ab/cd/.txt") ["ab", "cd", ".txt"]
-	$expect $ equal (splitDirectories "ab/./cd") ["ab", ".", "cd"]
+	let splitDirectories x = P.splitDirectories (fromChar8 x)
+	    fromChar8' = map fromChar8
+
+	$expect $ equal (splitDirectories "") (fromChar8' [])
+	$expect $ equal (splitDirectories "/") (fromChar8' ["/"])
+	$expect $ equal (splitDirectories "/a") (fromChar8' ["/", "a"])
+	$expect $ equal (splitDirectories "/ab/cd") (fromChar8' ["/", "ab/", "cd"])
+	$expect $ equal (splitDirectories "/ab/cd/") (fromChar8' ["/", "ab/", "cd/"])
+	$expect $ equal (splitDirectories "ab/cd") (fromChar8' ["ab/", "cd"])
+	$expect $ equal (splitDirectories "ab/cd/") (fromChar8' ["ab/", "cd/"])
+	$expect $ equal (splitDirectories "ab/cd.txt") (fromChar8' ["ab/", "cd.txt"])
+	$expect $ equal (splitDirectories "ab/cd/.txt") (fromChar8' ["ab/", "cd/", ".txt"])
+	$expect $ equal (splitDirectories "ab/./cd") (fromChar8' ["ab/", ".", "cd"])
 
 test_InvalidUtf8InDirectoryComponent :: Test
 test_InvalidUtf8InDirectoryComponent = assertions "invalid-utf8-in-directory-component" $ do
