diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,42 +1,6 @@
--- The code is mostly ripped from
--- https://github.com/ekmett/lens/blob/697582fb9a980f273dbf8496253c5bbefedd0a8b/Setup.lhs
-import Data.List ( nub )
-import Data.Version ( showVersion )
-import Distribution.Package ( PackageName(PackageName), Package, PackageId, InstalledPackageId, packageVersion, packageName )
-import Distribution.PackageDescription ( PackageDescription(), TestSuite(..) )
-import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )
-import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose, copyFiles )
-import Distribution.Simple.BuildPaths ( autogenModulesDir )
-import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), Flag(..), fromFlag, HaddockFlags(haddockDistPref))
-import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )
-import Distribution.Text ( display )
-import Distribution.Verbosity ( Verbosity, normal )
-import System.FilePath ( (</>) )
-
-main :: IO ()
-main = defaultMainWithHooks simpleUserHooks
-  { buildHook = \pkg lbi hooks flags -> do
-     generateBuildModule (fromFlag (buildVerbosity flags)) pkg lbi
-     buildHook simpleUserHooks pkg lbi hooks flags
-  }
-
-generateBuildModule :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
-generateBuildModule verbosity pkg lbi = do
-  let dir = autogenModulesDir lbi
-  createDirectoryIfMissingVerbose verbosity True dir
-  withLibLBI pkg lbi $ \_ libcfg -> do
-    withTestLBI pkg lbi $ \suite suitecfg -> do
-      rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines
-        [ "module Build_" ++ testName suite ++ " where"
-        , "import Prelude"
-        , "deps :: [String]"
-        , "deps = " ++ (show $ formatdeps (testDeps libcfg suitecfg))
-        ]
-  where
-    formatdeps = map (formatone . snd)
-    formatone p = case packageName p of
-      PackageName n -> n ++ "-" ++ showVersion (packageVersion p)
+module Main where
 
-testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId, PackageId)]
-testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys
+import Distribution.Extra.Doctest ( defaultMainWithDoctests )
 
+main :: IO ()
+main = defaultMainWithDoctests "doctest"
diff --git a/doctest/Main.hs b/doctest/Main.hs
--- a/doctest/Main.hs
+++ b/doctest/Main.hs
@@ -1,66 +1,13 @@
--- The code is mostly ripped from
--- https://github.com/ekmett/lens/blob/d1d97469f0e93c1d3535308954a060e8a04e37aa/tests/doctests.hsc
-import BasePrelude
-import System.Directory
-import System.FilePath
+module Main where
+
+import Prelude
+import Build_doctests (flags, pkgs, module_sources)
+import Data.Foldable (traverse_)
 import Test.DocTest
-import Build_doctest (deps)
 
 main :: IO ()
 main = do
-  sources <- getSources
-  doctest $ dfltParams ++ map ("-package="++) deps ++ sources
-  where
-    dfltParams = 
-      [
-        "-isrc",
-        "-idist/build/autogen",
-        "-optP-include",
-        "-optPdist/build/autogen/cabal_macros.h",
-        "-XArrows",
-        "-XBangPatterns",
-        "-XConstraintKinds",
-        "-XDataKinds",
-        "-XDefaultSignatures",
-        "-XDeriveDataTypeable",
-        "-XDeriveFunctor",
-        "-XDeriveGeneric",
-        "-XEmptyDataDecls",
-        "-XFlexibleContexts",
-        "-XFlexibleInstances",
-        "-XFunctionalDependencies",
-        "-XGADTs",
-        "-XGeneralizedNewtypeDeriving",
-        "-XImpredicativeTypes",
-        "-XLambdaCase",
-        "-XLiberalTypeSynonyms",
-        "-XMultiParamTypeClasses",
-        "-XMultiWayIf",
-        "-XNoImplicitPrelude",
-        "-XNoMonomorphismRestriction",
-        "-XOverloadedStrings",
-        "-XPatternGuards",
-        "-XParallelListComp",
-        "-XQuasiQuotes",
-        "-XRankNTypes",
-        "-XRecordWildCards",
-        "-XScopedTypeVariables",
-        "-XStandaloneDeriving",
-        "-XTemplateHaskell",
-        "-XTupleSections",
-        "-XTypeFamilies",
-        "-XTypeOperators",
-        "-hide-all-packages"
-      ]
-
-getSources :: IO [FilePath]
-getSources = filter (isSuffixOf ".hs") <$> go "library"
+  traverse_ putStrLn args
+  doctest args
   where
-    go dir = do
-      (dirs, files) <- getFilesAndDirectories dir
-      (files ++) . concat <$> mapM go dirs
-
-getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])
-getFilesAndDirectories dir = do
-  c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir
-  (,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c
+    args = flags ++ pkgs ++ module_sources
diff --git a/record.cabal b/record.cabal
--- a/record.cabal
+++ b/record.cabal
@@ -1,7 +1,7 @@
 name:
   record
 version:
-  0.3.2
+  0.3.2.1
 synopsis:
   First class records implemented with quasi-quotation
 description:
@@ -73,7 +73,7 @@
     text >= 1 && < 2,
     --
     template-haskell >= 2.8 && < 3,
-    template-haskell-compat-v0208 == 0.1.*,
+    template-haskell-compat-v0208 >= 0.1.1.1 && < 0.2,
     -- 
     transformers >= 0.2 && < 0.6,
     base-prelude >= 0.1 && < 2,
@@ -98,10 +98,9 @@
   if !flag(doctest)
     buildable: False
   build-depends:
-    doctest == 0.11.*,
-    directory == 1.2.*,
+    doctest >= 0.13 && < 0.17,
+    directory >= 1.2 && < 1.5,
     filepath >= 1.3 && < 1.5,
-    base-prelude,
     base
 
 
