diff --git a/doctest-discover.cabal b/doctest-discover.cabal
--- a/doctest-discover.cabal
+++ b/doctest-discover.cabal
@@ -1,8 +1,5 @@
--- Initial doctest-discover.cabal generated by cabal init.  For further 
--- documentation, see http://haskell.org/cabal/users-guide/
-
 name:                doctest-discover
-version:             0.1.0.3
+version:             0.1.0.4
 synopsis:            Easy way to run doctests via cabal
 description:         doctest-discover provides an easy way to run doctests via cabal
 license:             PublicDomain
diff --git a/src/Config.hs b/src/Config.hs
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -7,24 +7,32 @@
 import qualified Data.ByteString.Lazy.Char8 as B
 
 data Config = Config {
-    ignore :: Maybe [String]
+    ignore :: Maybe [String],
+    sourceFolders :: Maybe [String]
 } deriving (Show)
 
 instance FromJSON Config where
     parseJSON (Object v) = 
         Config <$> 
-        (v .: "ignore")
+        (v .:? "ignore") <*>
+        (v .:? "sourceFolders")
 
 -- | Parses config json as string to the Config type
 --
 -- >>> config "{\"ignore\": [] }"
--- Just (Config {ignore = Just []})
+-- Just (Config {ignore = Just [], sourceFolders = Nothing})
 --
 -- >>> config "{\"ignore\": [\"Foo.hs\"] }"
--- Just (Config {ignore = Just ["Foo.hs"]})
+-- Just (Config {ignore = Just ["Foo.hs"], sourceFolders = Nothing})
 --
 -- >>> config "{\"ignore\": [1,2,3] }"
 -- Nothing
+--
+-- >>> config "{\"sourceFolders\": [1,2,3] }"
+-- Nothing
+--
+-- >>> config "{\"sourceFolders\": [\"src\"] }"
+-- Just (Config {ignore = Nothing, sourceFolders = Just ["src"]})
 --
 config :: String -> Maybe Config
 config json = decode (B.pack json) :: Maybe Config
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -1,11 +1,13 @@
 module Main where
 
 import System.Environment
-import Control.Applicative
+import Control.Applicative 
+import Control.Monad
+import Data.Maybe (fromMaybe)
 import Runner
 import Config
 import System.Directory
-
+import System.FilePath
 
 main :: IO ()
 main = do
@@ -14,9 +16,17 @@
                               (configFile : _) -> readFile configFile
                               _ -> return ""
     customConfiguration <- config <$> configFileContents
-    files <- getDirectoryContents "src" 
-    let testDriverFileContents = driver files customConfiguration
+    let sources = case customConfiguration of
+                    Just (Config _ (Just sourceFolders)) -> sourceFolders
+                    _ -> ["src"]
+    files <- sequence $ map getAbsDirectoryContents sources
+    let testDriverFileContents = driver (concat files) customConfiguration
     writeFile dst testDriverFileContents
+
+getAbsDirectoryContents :: FilePath -> IO [FilePath]
+getAbsDirectoryContents dir = getDirectoryContents dir >>= mapM (canonicalizePath . (dir </>))
+
+
 
 
 
diff --git a/src/Runner.hs b/src/Runner.hs
--- a/src/Runner.hs
+++ b/src/Runner.hs
@@ -8,7 +8,7 @@
 
 -- | Generates doctest driver
 --
--- >>> let expected = unlines ["module Main where", "import Test.DocTest", "main :: IO ()", "main = doctest [\"-isrc\",\"foo\",\"bar\"]"]
+-- >>> let expected = unlines ["module Main where", "import Test.DocTest", "main :: IO ()", "main = doctest [\"-i/src\",\"foo.hs\",\"bar.hs\"]"]
 -- >>> let actual = driver ["foo.hs", "bar.hs", "baz.qux"] Nothing
 -- >>> expected == actual
 -- True
@@ -19,25 +19,25 @@
 -- | Generates doctest configuration
 --
 -- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] Nothing
--- ["-isrc","foo","bar"]
+-- ["-i/src","foo.hs","bar.hs"]
 --
--- >>> let config = Just (Config (Just ["bar.hs"]))
+-- >>> let config = Just (Config (Just ["bar.hs"]) Nothing)
 -- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config
--- ["-isrc","foo"]
+-- ["-i/src","foo.hs"]
 --
+-- >>> let config = Just (Config Nothing (Just ["qux"]))
+-- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config
+-- ["-i/qux","foo.hs","bar.hs"]
+--
+-- >>> let config = Just (Config (Just ["bar.hs"]) (Just ["qux"]))
+-- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config
+-- ["-i/qux","foo.hs"]
+--
 generateConfig :: [FilePath] -> Maybe Config -> [String]
-generateConfig files config = case config of
-                                Just (Config (Just (ignoreList))) -> ((:) "-isrc" . dropFileExtensions . filter (`notElem` ignoreList) . notCurrentAndParent . filterHaskellSources) files
-                                _ ->  ((:) "-isrc" . dropFileExtensions . notCurrentAndParent . filterHaskellSources) files
-
-
--- | Drops file extensions
--- 
--- >>> dropFileExtensions ["foo.bar", "bar.baz", "baz.qux"]
--- ["foo","bar","baz"]
-
-dropFileExtensions :: [FilePath] -> [String]
-dropFileExtensions = map dropExtension
+generateConfig files (Just (Config Nothing (Just sourceFolders))) = ((++) (map ("-i/"++) sourceFolders) . notCurrentAndParent . filterHaskellSources) files
+generateConfig files (Just (Config (Just ignoreList) Nothing)) = ((:) "-i/src" . filter (`notElem` ignoreList) . notCurrentAndParent . filterHaskellSources) files
+generateConfig files (Just (Config (Just ignoreList) (Just sourceFolders))) = ((++) (map ("-i/"++) sourceFolders) . filter (`notElem` ignoreList) . notCurrentAndParent . filterHaskellSources) files
+generateConfig files _ = ((:) "-i/src" . notCurrentAndParent . filterHaskellSources) files
 
 -- | Filters out current and parent directories 
 --
