diff --git a/barecheck.cabal b/barecheck.cabal
--- a/barecheck.cabal
+++ b/barecheck.cabal
@@ -3,10 +3,10 @@
 -- http://www.github.com/massysett/cartel
 --
 -- Script name used to generate: genCabal.hs
--- Generated on: 2014-11-23 08:42:59.282905 EST
+-- Generated on: 2014-11-23 20:33:36.359098 EST
 -- Cartel library version: 0.10.0.2
 name: barecheck
-version: 0.2.0.2
+version: 0.2.0.4
 cabal-version: >= 1.14
 build-type: Simple
 license: BSD3
@@ -48,9 +48,15 @@
   type: git
   location: http://github.com/massysett/barecheck.git
 
+Flag oldQuickCheck
+  Description: Use QuickCheck 2.6
+  Default: False
+  Manual: False
+
 Library
   exposed-modules:
-      Barecheck.Util
+      Barecheck.Promote
+    , Barecheck.Util
     , Data.Map.Coarbitrary
     , Data.Map.Generators
     , Data.Map.Shrinkers
@@ -73,13 +79,22 @@
     , Prelude.Generators
     , Prelude.Shrinkers
   build-depends:
-      QuickCheck ((> 2.7 || == 2.7) && < 2.8)
+      QuickCheck ((> 2.6 || == 2.6) && < 2.8)
     , base ((> 4.5.0.0 || == 4.5.0.0) && < 4.8.0.0)
     , text ((> 0.11.3.1 || == 0.11.3.1) && < 1.3)
     , containers ((> 0.4.2.1 || == 0.4.2.1) && < 0.6)
     , time ((> 1.4 || == 1.4) && < 1.6)
-  hs-source-dirs:
-      lib
+  if flag(oldQuickCheck)
+    hs-source-dirs:
+        oldQuickCheck
+      , lib
+    build-depends:
+        QuickCheck ((> 2.6 || == 2.6) && < 2.7)
+  else
+    hs-source-dirs:
+        lib
+    build-depends:
+        QuickCheck ((> 2.7 || == 2.7) && < 2.8)
   ghc-options:
       -Wall
   default-language: Haskell2010
diff --git a/genCabal.hs b/genCabal.hs
--- a/genCabal.hs
+++ b/genCabal.hs
@@ -8,7 +8,7 @@
 import qualified Cartel as A
 
 versionInts :: [Int]
-versionInts = [0,2,0,2]
+versionInts = [0,2,0,4]
 
 version :: A.Version
 version = A.Version versionInts
@@ -67,7 +67,7 @@
   }
 
 quickcheck :: A.Package
-quickcheck = A.nextBreaking "QuickCheck" [2,7]
+quickcheck = A.closedOpen "QuickCheck" [2,6] [2,8]
 
 base :: A.Package
 base = A.closedOpen "base" [4,5,0,0] [4,8,0,0]
@@ -81,6 +81,14 @@
 time :: A.Package
 time = A.closedOpen "time" [1,4] [1,6]
 
+oldQuickCheck :: A.Flag
+oldQuickCheck = A.Flag
+  { A.flName = "oldQuickCheck"
+  , A.flDescription = "Use QuickCheck 2.6"
+  , A.flDefault = False
+  , A.flManual = False
+  }
+
 library
   :: [String]
   -- ^ Library modules
@@ -94,7 +102,13 @@
     , containers
     , time
     ]
-  , A.hsSourceDirs [ "lib" ]
+  , A.cif (A.flag "oldQuickCheck")
+    [ A.hsSourceDirs [ "oldQuickCheck", "lib" ]
+    , A.buildDepends [ A.closedOpen "QuickCheck" [2,6] [2,7] ]
+    ]
+    [ A.hsSourceDirs [ "lib" ]
+    , A.buildDepends [ A.closedOpen "QuickCheck" [2,7] [2,8] ]
+    ]
   , A.ghcOptions [ "-Wall" ]
   , A.defaultLanguage A.Haskell2010
   ]
@@ -106,6 +120,7 @@
 cabal ms = A.empty
   { A.cProperties = properties
   , A.cRepositories = [repo]
+  , A.cFlags = [ oldQuickCheck ]
   , A.cLibrary = Just $ library ms
   }
 
diff --git a/lib/Data/Map/Shrinkers.hs b/lib/Data/Map/Shrinkers.hs
--- a/lib/Data/Map/Shrinkers.hs
+++ b/lib/Data/Map/Shrinkers.hs
@@ -1,7 +1,7 @@
 module Data.Map.Shrinkers where
 
 import Prelude hiding (map)
-import Test.QuickCheck
+import Test.QuickCheck.Arbitrary (shrinkList)
 import qualified Data.Map as M
 
 map :: Ord k => ((k, a) -> [(k, a)]) -> M.Map k a -> [M.Map k a]
diff --git a/lib/Data/Sequence/Shrinkers.hs b/lib/Data/Sequence/Shrinkers.hs
--- a/lib/Data/Sequence/Shrinkers.hs
+++ b/lib/Data/Sequence/Shrinkers.hs
@@ -1,6 +1,6 @@
 module Data.Sequence.Shrinkers where
 
-import Test.QuickCheck
+import Test.QuickCheck.Arbitrary (shrinkList)
 import Data.Sequence
 import Prelude hiding (seq)
 import Data.Foldable
diff --git a/lib/Data/Text/Shrinkers.hs b/lib/Data/Text/Shrinkers.hs
--- a/lib/Data/Text/Shrinkers.hs
+++ b/lib/Data/Text/Shrinkers.hs
@@ -2,7 +2,7 @@
 
 import Data.Text (Text)
 import qualified Data.Text as X
-import Test.QuickCheck
+import Test.QuickCheck.Arbitrary (shrinkList)
 
 text :: (Char -> [Char]) -> Text -> [Text]
 text f = map X.pack . shrinkList f . X.unpack
diff --git a/lib/Data/Tree/Shrinkers.hs b/lib/Data/Tree/Shrinkers.hs
--- a/lib/Data/Tree/Shrinkers.hs
+++ b/lib/Data/Tree/Shrinkers.hs
@@ -2,7 +2,7 @@
 
 import Data.Tree
 import Prelude.Shrinkers
-import Test.QuickCheck
+import Test.QuickCheck.Arbitrary (shrinkList)
 
 tree
   :: (a -> [a])
diff --git a/lib/Prelude/Generators.hs b/lib/Prelude/Generators.hs
--- a/lib/Prelude/Generators.hs
+++ b/lib/Prelude/Generators.hs
@@ -23,8 +23,9 @@
 module Prelude.Generators where
 
 import Test.QuickCheck
+  ( Gen, frequency, oneof )
 import Prelude hiding (maybe, either)
-import Test.QuickCheck.Gen.Unsafe
+import Barecheck.Promote
 import Control.Monad
 
 maybe :: Gen a -> Gen (Maybe a)
diff --git a/oldQuickCheck/Barecheck/Promote.hs b/oldQuickCheck/Barecheck/Promote.hs
new file mode 100644
--- /dev/null
+++ b/oldQuickCheck/Barecheck/Promote.hs
@@ -0,0 +1,8 @@
+-- | This module allows for the 'promote' function to be imported
+-- correctly from different QuickCheck versions.  QuickCheck 2.6 used
+-- Test.QuickCheck.Gen.promote; QuickCheck 2.7 uses
+-- Test.QuickCheck.Gen.Unsafe.promote.
+
+module Barecheck.Promote (promote) where
+
+import Test.QuickCheck.Gen (promote)
