diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+0.0.9
+
+* fix dependency on `bifunctors`.
+
 0.0.8
 
 * add upper version bounds.
diff --git a/test/Tests.hs b/test/Tests.hs
new file mode 100644
--- /dev/null
+++ b/test/Tests.hs
@@ -0,0 +1,4 @@
+module Main where
+
+main :: IO ()
+main = pure ()
diff --git a/test/doctests.hs b/test/doctests.hs
deleted file mode 100644
--- a/test/doctests.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-module Main where
-
-import Build_doctests (deps)
-import Control.Applicative
-import Control.Monad
-import Data.List
-import System.Directory
-import System.FilePath
-import Test.DocTest
-
-main ::
-  IO ()
-main =
-  getSources >>= \sources -> doctest $
-      "-isrc"
-    : "-idist/build/autogen"
-    : "-optP-include"
-    : "-optPdist/build/autogen/cabal_macros.h"
-    : "-hide-all-packages"
-    : map ("-package="++) deps ++ sources
-
-getSources :: IO [FilePath]
-getSources = filter (isSuffixOf ".hs") <$> go "src"
-  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
diff --git a/tickle.cabal b/tickle.cabal
--- a/tickle.cabal
+++ b/tickle.cabal
@@ -1,5 +1,5 @@
 name:               tickle
-version:            0.0.8
+version:            0.0.9
 license:            BSD3
 license-file:       LICENCE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
@@ -33,7 +33,7 @@
                     base >= 4.8 && < 5
                     , semigroups >= 0.8 && < 0.19
                     , semigroupoids >= 4.2 && < 5.3
-                    , bifunctors >= 3.0 && < 5.4
+                    , bifunctors >= 3.0 && < 5.5
                     , bytestring >= 0.10 && < 0.11
                     , transformers >= 0.3.0.0 && < 0.6
                     , mtl >= 2.1 && < 2.3
@@ -57,28 +57,29 @@
                     Data.Tickle.Get
                     Data.Tickle.IsolateError
                     Data.Tickle.RunGetResult
-                    
-test-suite doctests
-  type:
+             
+test-suite          tests
+
+  build-depends:      base >= 4.8 && < 5
+                    , QuickCheck >= 2.9.2 && < 2.11
+                    , checkers >= 0.4.6 && < 0.5
+                    , lens >= 4.15 && < 4.16
+                    , tasty >= 0.11 && < 0.12
+                    , tasty-hunit >= 0.9 && < 0.10
+                    , tasty-quickcheck >= 0.8.4 && < 0.10
+                    , tickle
+
+  type:             
                     exitcode-stdio-1.0
 
-  main-is:
-                    doctests.hs
+  main-is:          
+                    Tests.hs
 
-  default-language:
-                    Haskell2010
+  hs-source-dirs:   
+                    test
 
-  build-depends:
-                    base >= 4.8 && < 5
-                    , doctest >= 0.9.7 && < 0.12
-                    , filepath >= 1.3 && < 1.5
-                    , directory >= 1.1 && < 1.4
-                    , QuickCheck >= 2.0 && < 3.0
-                    , template-haskell >= 2.8 && < 2.12
+  default-language: 
+                    Haskell2010
 
-  ghc-options:
+  ghc-options:       
                     -Wall
-                    -threaded
-
-  hs-source-dirs:
-                    test
