diff --git a/doctest-discover.cabal b/doctest-discover.cabal
--- a/doctest-discover.cabal
+++ b/doctest-discover.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                doctest-discover
-version:             0.1.0.2
+version:             0.1.0.3
 synopsis:            Easy way to run doctests via cabal
 description:         doctest-discover provides an easy way to run doctests via cabal
 license:             PublicDomain
@@ -16,14 +16,14 @@
 
 library
   default-language:    Haskell2010
-  build-depends:       base >=4.6 && <4.7, doctest, directory, filepath, temporary
+  build-depends:       base >=4.6 && <4.7, doctest, directory, filepath, temporary, aeson, bytestring
   HS-Source-Dirs:      src
 
 executable doctest-discover
   default-language:    Haskell2010
-  build-depends:       base >=4.6 && <4.7, doctest, directory, filepath, temporary
+  build-depends:       base >=4.6 && <4.7, doctest, directory, filepath, temporary, aeson, bytestring
   main-is:             Main.hs 
-  other-modules:       Runner
+  other-modules:       Runner, Config
   HS-Source-Dirs:      src
 
 test-suite doctests
@@ -31,5 +31,5 @@
   type:                exitcode-stdio-1.0
   ghc-options:         -threaded
   main-is:             Doctest-Main.hs
-  build-depends:       base >4 && <5, doctest
+  build-depends:       base >4 && <5, doctest-discover, doctest
   HS-Source-Dirs:      test
diff --git a/src/Config.hs b/src/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Config.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Config where
+
+import Data.Aeson ((.:), (.:?), decode, FromJSON(..), Value(..))
+import Control.Applicative
+import qualified Data.ByteString.Lazy.Char8 as B
+
+data Config = Config {
+    ignore :: Maybe [String]
+} deriving (Show)
+
+instance FromJSON Config where
+    parseJSON (Object v) = 
+        Config <$> 
+        (v .: "ignore")
+
+-- | Parses config json as string to the Config type
+--
+-- >>> config "{\"ignore\": [] }"
+-- Just (Config {ignore = Just []})
+--
+-- >>> config "{\"ignore\": [\"Foo.hs\"] }"
+-- Just (Config {ignore = Just ["Foo.hs"]})
+--
+-- >>> config "{\"ignore\": [1,2,3] }"
+-- Nothing
+--
+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,24 +1,23 @@
 module Main where
 
 import System.Environment
+import Control.Applicative
 import Runner
+import Config
 import System.Directory
 
 
 main :: IO ()
 main = do
     (src : _ : dst : args) <- getArgs
+    let configFileContents = case args of
+                              (configFile : _) -> readFile configFile
+                              _ -> return ""
+    customConfiguration <- config <$> configFileContents
     files <- getDirectoryContents "src" 
-    let config = generateConfig files 
-    writeFile dst (makeFileContents config)
+    let testDriverFileContents = driver files customConfiguration
+    writeFile dst testDriverFileContents
 
-makeFileContents :: [String] -> String
-makeFileContents config = unlines [
-                                "module Main where",
-                                "import Test.DocTest",
-                                "main :: IO ()",
-                                "main = doctest " ++ show config
-                           ]
 
 
 
diff --git a/src/Runner.hs b/src/Runner.hs
--- a/src/Runner.hs
+++ b/src/Runner.hs
@@ -1,17 +1,35 @@
 module Runner (
-    generateConfig
+    driver
 ) where
 
 import Data.List
+import Config
 import System.FilePath.Posix
 
+-- | Generates doctest driver
+--
+-- >>> let expected = unlines ["module Main where", "import Test.DocTest", "main :: IO ()", "main = doctest [\"-isrc\",\"foo\",\"bar\"]"]
+-- >>> let actual = driver ["foo.hs", "bar.hs", "baz.qux"] Nothing
+-- >>> expected == actual
+-- True
+--
+driver :: [FilePath] -> Maybe Config -> String
+driver files config = unlines $ ["module Main where", "import Test.DocTest", "main :: IO ()", "main = doctest " ++ (show $ generateConfig files config)]
+
 -- | Generates doctest configuration
 --
--- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"]
+-- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] Nothing
 -- ["-isrc","foo","bar"]
 --
-generateConfig :: [FilePath] -> [String]
-generateConfig = ((:) "-isrc" . dropFileExtensions . notCurrentAndParent . filterHaskellSources) 
+-- >>> let config = Just (Config (Just ["bar.hs"]))
+-- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config
+-- ["-isrc","foo"]
+--
+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
 -- 
