diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -10,3 +10,7 @@
 
 * Align version with foscam-filename
 
+0.0.4
+
+* Add `filenames` function.
+
diff --git a/foscam-directory.cabal b/foscam-directory.cabal
--- a/foscam-directory.cabal
+++ b/foscam-directory.cabal
@@ -1,5 +1,5 @@
 name:               foscam-directory
-version:            0.0.3
+version:            0.0.4
 license:            BSD3
 license-file:       LICENSE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> <dibblego>
@@ -34,7 +34,7 @@
                     , utf8-string     >= 1     && < 2.0
                     , lens            >= 4.0   && < 5
                     , pretty          >= 1.1.2 && < 1.2
-                    , foscam-filename == 0.0.3
+                    , foscam-filename == 0.0.4
 
   ghc-options:
                     -Wall
diff --git a/src/Data/Foscam/Directory.hs b/src/Data/Foscam/Directory.hs
--- a/src/Data/Foscam/Directory.hs
+++ b/src/Data/Foscam/Directory.hs
@@ -3,18 +3,20 @@
 module Data.Foscam.Directory(
   getFoscamDirectoryContents
 , FoscamDirectoryFile(Isn't, Is)
+, filenames
 ) where
 
-import Data.Foscam.File.Filename(Filename, filename)
-import System.Directory(getDirectoryContents)
-import Text.Trifecta(Result(Success, Failure), parseString)
-import Text.Trifecta.Delta(Delta(Directed))
+import Control.Category((.), id)
 import Data.ByteString.UTF8 as UTF8(fromString)
 import Data.Eq(Eq)
+import Data.Foscam.File.Filename(Filename, filename)
+import Data.Functor(fmap, (<$>))
+import Data.List(foldr)
 import Data.Ord(Ord)
+import System.Directory(getDirectoryContents)
 import System.IO(IO, FilePath)
-import Control.Category((.))
-import Data.Functor(fmap, (<$>))
+import Text.Trifecta(Result(Success, Failure), parseString)
+import Text.Trifecta.Delta(Delta(Directed))
 import Prelude(Show)
 
 data FoscamDirectoryFile =
@@ -31,3 +33,11 @@
       fromResult (Failure _) =
         Isn't p
   in fmap (fromResult . parseString filename (Directed (UTF8.fromString p) 0 0 0 0)) <$> getDirectoryContents p
+
+filenames ::
+  [FoscamDirectoryFile]
+  -> [Filename]
+filenames =
+  foldr (\f -> case f of
+                 Isn't _ -> id
+                 Is n -> (n:)) []
