diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+4.2.1
+-----
+* Added flags that supply unsupported build modes that can be convenient for sandbox users.
+
 4.2
 ---
 * `transformers 0.4` compatibility
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright 2008-2013 Edward Kmett
+Copyright 2008-2014 Edward Kmett
 Copyright 2004-2008 Dave Menendez
 
 All rights reserved.
diff --git a/comonad.cabal b/comonad.cabal
--- a/comonad.cabal
+++ b/comonad.cabal
@@ -1,6 +1,6 @@
 name:          comonad
 category:      Control, Comonads
-version:       4.2
+version:       4.2.1
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -9,7 +9,7 @@
 stability:     provisional
 homepage:      http://github.com/ekmett/comonad/
 bug-reports:   http://github.com/ekmett/comonad/issues
-copyright:     Copyright (C) 2008-2013 Edward A. Kmett,
+copyright:     Copyright (C) 2008-2014 Edward A. Kmett,
                Copyright (C) 2004-2008 Dave Menendez
 synopsis:      Comonads
 description:   Comonads
@@ -30,6 +30,37 @@
   default: True
   manual: True
 
+flag containers
+  description:
+    You can disable the use of the `containers` package using `-f-containers`.
+    .
+    Disabing this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
+  default: True
+  manual: True
+
+flag contravariant
+  description:
+    You can disable the use of the `contravariant` package using `-f-contravariant`.
+    .
+    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
+    .
+    If disabled we will not supply instances of `Contravariant`
+    .
+  default: True
+  manual: True
+
+flag distributive
+  description:
+    You can disable the use of the `distributive` package using `-f-distributive`.
+    .
+    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
+    .
+    If disabled we will not supply instances of `Distributive`
+    .
+  default: True
+  manual: True
+
+
 source-repository head
   type: git
   location: git://github.com/ekmett/comonad.git
@@ -41,13 +72,20 @@
   ghc-options: -Wall
 
   build-depends:
-    base          >= 4       && < 5,
-    containers    >= 0.3     && < 0.6,
-    contravariant >= 0.2.0.1 && < 1,
-    distributive  >= 0.2.2   && < 1,
-    semigroups    >= 0.8.3.1 && < 1,
-    tagged        >= 0.1     && < 1,
-    transformers  >= 0.2     && < 0.5
+    base                >= 4       && < 5,
+    semigroups          >= 0.8.3.1 && < 1,
+    tagged              >= 0.1     && < 1,
+    transformers        >= 0.2     && < 0.5,
+    transformers-compat >= 0.3     && < 1
+
+  if flag(containers)
+    build-depends: containers >= 0.3 && < 0.6
+
+  if flag(contravariant)
+    build-depends: contravariant >= 0.2.0.1 && < 1 
+
+  if flag(distributive)
+    build-depends: distributive >= 0.2.2   && < 1 
 
   exposed-modules:
     Control.Comonad
diff --git a/src/Control/Comonad.hs b/src/Control/Comonad.hs
--- a/src/Control/Comonad.hs
+++ b/src/Control/Comonad.hs
@@ -9,7 +9,7 @@
  -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Comonad
--- Copyright   :  (C) 2008-2012 Edward Kmett,
+-- Copyright   :  (C) 2008-2014 Edward Kmett,
 --                (C) 2004 Dave Menendez
 -- License     :  BSD-style (see the file LICENSE)
 --
@@ -56,11 +56,14 @@
 import Data.List.NonEmpty hiding (map)
 import Data.Semigroup hiding (Product)
 import Data.Tagged
-import Data.Tree
 import Prelude hiding (id, (.))
 import Control.Monad.Fix
 import Data.Typeable
 
+#ifdef MIN_VERSION_containers
+import Data.Tree
+#endif
+
 infixl 4 <@, @>, <@@>, <@>, $>
 infixl 1 =>>
 infixr 1 <<=, =<=, =>=
@@ -169,10 +172,12 @@
   extract = extract . runIdentityT
   {-# INLINE extract #-}
 
+#ifdef MIN_VERSION_containers
 instance Comonad Tree where
   duplicate w@(Node _ as) = Node w (map duplicate as)
   extract (Node a _) = a
   {-# INLINE extract #-}
+#endif
 
 instance Comonad NonEmpty where
   extend f w@ ~(_ :| aas) = f w :| case aas of
@@ -240,10 +245,12 @@
 instance ComonadApply w => ComonadApply (IdentityT w) where
   IdentityT wa <@> IdentityT wb = IdentityT (wa <@> wb)
 
+#ifdef MIN_VERSION_containers
 instance ComonadApply Tree where
   (<@>) = (<*>)
   (<@ ) = (<* )
   ( @>) = ( *>)
+#endif
 
 -- | A suitable default definition for 'fmap' for a 'Comonad'.
 -- Promotes a function to a comonad.
diff --git a/src/Control/Comonad/Env.hs b/src/Control/Comonad/Env.hs
--- a/src/Control/Comonad/Env.hs
+++ b/src/Control/Comonad/Env.hs
@@ -5,7 +5,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Comonad.Env
--- Copyright   :  (C) 2008-2011 Edward Kmett
+-- Copyright   :  (C) 2008-2014 Edward Kmett
 -- License     :  BSD-style (see the file LICENSE)
 --
 -- Maintainer  :  Edward Kmett <ekmett@gmail.com>
diff --git a/src/Control/Comonad/Identity.hs b/src/Control/Comonad/Identity.hs
--- a/src/Control/Comonad/Identity.hs
+++ b/src/Control/Comonad/Identity.hs
@@ -5,7 +5,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Comonad.Identity
--- Copyright   :  (C) 2008-2012 Edward Kmett
+-- Copyright   :  (C) 2008-2014 Edward Kmett
 -- License     :  BSD-style (see the file LICENSE)
 --
 -- Maintainer  :  Edward Kmett <ekmett@gmail.com>
diff --git a/src/Control/Comonad/Store.hs b/src/Control/Comonad/Store.hs
--- a/src/Control/Comonad/Store.hs
+++ b/src/Control/Comonad/Store.hs
@@ -5,7 +5,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Comonad.Store
--- Copyright   :  (C) 2008-2011 Edward Kmett
+-- Copyright   :  (C) 2008-2014 Edward Kmett
 -- License     :  BSD-style (see the file LICENSE)
 --
 -- Maintainer  :  Edward Kmett <ekmett@gmail.com>
diff --git a/src/Control/Comonad/Traced.hs b/src/Control/Comonad/Traced.hs
--- a/src/Control/Comonad/Traced.hs
+++ b/src/Control/Comonad/Traced.hs
@@ -5,7 +5,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Comonad.Traced
--- Copyright   :  (C) 2008-2011 Edward Kmett
+-- Copyright   :  (C) 2008-2014 Edward Kmett
 -- License     :  BSD-style (see the file LICENSE)
 --
 -- Maintainer  :  Edward Kmett <ekmett@gmail.com>
diff --git a/src/Control/Comonad/Trans/Traced.hs b/src/Control/Comonad/Trans/Traced.hs
--- a/src/Control/Comonad/Trans/Traced.hs
+++ b/src/Control/Comonad/Trans/Traced.hs
@@ -8,7 +8,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Comonad.Trans.Traced
--- Copyright   :  (C) 2008-2013 Edward Kmett
+-- Copyright   :  (C) 2008-2014 Edward Kmett
 -- License     :  BSD-style (see the file LICENSE)
 --
 -- Maintainer  :  Edward Kmett <ekmett@gmail.com>
@@ -45,11 +45,14 @@
 import Control.Comonad
 import Control.Comonad.Hoist.Class
 import Control.Comonad.Trans.Class
-import Data.Distributive
 import Data.Functor.Identity
 import Data.Semigroup
 import Data.Typeable
 
+#ifdef MIN_VERSION_distributive
+import Data.Distributive
+#endif
+
 type Traced m = TracedT m Identity
 
 traced :: (m -> a) -> Traced m a
@@ -80,8 +83,10 @@
 instance Monoid m => ComonadHoist (TracedT m) where
   cohoist l = TracedT . l . runTracedT
 
+#ifdef MIN_VERSION_distributive
 instance Distributive w => Distributive (TracedT m w) where
   distribute = TracedT . fmap (\tma m -> fmap ($ m) tma) . collect runTracedT
+#endif
 
 trace :: Comonad w => m -> TracedT m w a -> a
 trace m (TracedT wf) = extract wf m
diff --git a/src/Data/Functor/Coproduct.hs b/src/Data/Functor/Coproduct.hs
--- a/src/Data/Functor/Coproduct.hs
+++ b/src/Data/Functor/Coproduct.hs
@@ -20,10 +20,13 @@
   ) where
 
 import Control.Comonad
-import Data.Functor.Contravariant
 import Data.Foldable
 import Data.Traversable
 
+#ifdef MIN_VERSION_contravariant
+import Data.Functor.Contravariant
+#endif
+
 newtype Coproduct f g a = Coproduct { getCoproduct :: Either (f a) (g a) }
   deriving (Eq, Ord, Read, Show)
 
@@ -53,5 +56,7 @@
     (Right . extend (f . Coproduct . Right))
   extract = coproduct extract extract
 
+#ifdef MIN_VERSION_contravariant
 instance (Contravariant f, Contravariant g) => Contravariant (Coproduct f g) where
   contramap f = Coproduct . coproduct (Left . contramap f) (Right . contramap f)
+#endif
