diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 1.1
+
+- Reverse dependency with `aeson`.
+  - The `QuickCheck` instances are moved into `quickcheck-instances`
+  - The `semigroupoids` instances are gone for now.
+
 # 1.0.1
 
 - add `partitionEithersNE :: NonEmpty (Either a b) -> These (NonEmpty a) (NonEmpty b)`
diff --git a/src/Data/Functor/These.hs b/src/Data/Functor/These.hs
--- a/src/Data/Functor/These.hs
+++ b/src/Data/Functor/These.hs
@@ -45,20 +45,6 @@
 import Data.Typeable (Typeable)
 #endif
 
-#ifdef MIN_VERSION_aeson
-import Data.Aeson
-       (FromJSON (..), FromJSON1 (..), ToJSON (..), ToJSON1 (..), (.=))
-import qualified Data.Aeson          as Aeson
-import qualified Data.Aeson.Encoding as Aeson (pair)
-import qualified Data.HashMap.Strict as HM
-#endif
-
-#ifdef MIN_VERSION_QuickCheck
-import Test.QuickCheck
-       (Arbitrary (..), Arbitrary1 (..), arbitrary1, liftShrink2, oneof,
-       shrink1)
-#endif
-
 -------------------------------------------------------------------------------
 -- These1
 -------------------------------------------------------------------------------
@@ -220,62 +206,4 @@
 -- | This instance is available only with @deepseq >= 1.4.3.0@
 instance (NFData1 f, NFData1 g, NFData a) => NFData (These1 f g a) where
     rnf = rnf1
-#endif
-
--------------------------------------------------------------------------------
--- aeson
--------------------------------------------------------------------------------
-
-#ifdef MIN_VERSION_aeson
-instance (ToJSON1 f, ToJSON1 g) => ToJSON1 (These1 f g) where
-    liftToJSON tx tl (This1 a)    = Aeson.object [ "This" .= liftToJSON tx tl a ]
-    liftToJSON tx tl (That1 b)    = Aeson.object [ "That" .= liftToJSON tx tl b ]
-    liftToJSON tx tl (These1 a b) = Aeson.object [ "This" .= liftToJSON tx tl a, "That" .= liftToJSON tx tl b ]
-
-    liftToEncoding tx tl (This1 a)    = Aeson.pairs $ Aeson.pair "This" (liftToEncoding tx tl a)
-    liftToEncoding tx tl (That1 b)    = Aeson.pairs $ Aeson.pair "That" (liftToEncoding tx tl b)
-    liftToEncoding tx tl (These1 a b) = Aeson.pairs $
-        Aeson.pair "This" (liftToEncoding tx tl a) `mappend`
-        Aeson.pair "That" (liftToEncoding tx tl b)
-
-instance (FromJSON1 f, FromJSON1 g) => FromJSON1 (These1 f g) where
-    liftParseJSON px pl = Aeson.withObject "These1" (p . HM.toList)
-      where
-        p [("This", a), ("That", b)] = These1 <$> liftParseJSON px pl a <*> liftParseJSON px pl b
-        p [("That", b), ("This", a)] = These1 <$> liftParseJSON px pl a <*> liftParseJSON px pl b
-        p [("This", a)] = This1 <$> liftParseJSON px pl a
-        p [("That", b)] = That1 <$> liftParseJSON px pl b
-        p _  = fail "Expected object with 'This' and 'That' keys only"
-
-instance (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (These1 f g a) where
-    toJSON = Aeson.toJSON1
-    toEncoding = Aeson.toEncoding1
-
-instance (FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (These1 f g a) where
-    parseJSON = Aeson.parseJSON1
-#endif
-
--------------------------------------------------------------------------------
--- QuickCheck
--------------------------------------------------------------------------------
-
-#ifdef MIN_VERSION_QuickCheck
-instance (Arbitrary1 f, Arbitrary1 g) => Arbitrary1 (These1 f g) where
-    liftArbitrary arb = oneof
-        [ This1 <$> liftArbitrary arb
-        , That1 <$> liftArbitrary arb
-        , These1 <$> liftArbitrary arb <*> liftArbitrary arb
-        ]
-
-    liftShrink shr (This1 x) = This1 <$> liftShrink shr x
-    liftShrink shr (That1 y) = That1 <$> liftShrink shr y
-    liftShrink shr (These1 x y) =
-        [ This1 x, That1 y ] ++
-        [ These1 x' y'
-        | (x', y') <- liftShrink2 (liftShrink shr) (liftShrink shr) (x, y)
-        ]
-
-instance (Arbitrary1 f, Arbitrary1 g, Arbitrary a) => Arbitrary (These1 f g a) where
-    arbitrary = arbitrary1
-    shrink    = shrink1
 #endif
diff --git a/src/Data/These.hs b/src/Data/These.hs
--- a/src/Data/These.hs
+++ b/src/Data/These.hs
@@ -46,33 +46,11 @@
 import GHC.Generics (Generic1)
 #endif
 
-#ifdef MIN_VERSION_aeson
-import Data.Aeson (FromJSON (..), ToJSON (..), (.=))
-
-import qualified Data.Aeson          as Aeson
-import qualified Data.Aeson.Encoding as Aeson (pair)
-import qualified Data.HashMap.Strict as HM
-#endif
-
 #ifdef MIN_VERSION_assoc
 import Data.Bifunctor.Assoc (Assoc (..))
 import Data.Bifunctor.Swap  (Swap (..))
 #endif
 
-#ifdef MIN_VERSION_semigroupoids
-import Data.Functor.Bind            (Apply (..), Bind (..))
-import Data.Semigroup.Bifoldable    (Bifoldable1 (..))
-import Data.Semigroup.Bitraversable (Bitraversable1 (..))
-#endif
-
-#ifdef MIN_VERSION_QuickCheck
-import Test.QuickCheck
-       (Arbitrary (..), Arbitrary1 (..), Arbitrary2 (..), CoArbitrary (..),
-       arbitrary1, oneof, shrink1)
-import Test.QuickCheck.Function (Function (..), functionMap)
-#endif
-
-
 -- $setup
 -- >>> import Control.Lens
 
@@ -164,10 +142,10 @@
 -- @since 1.0.1
 partitionEithersNE :: NonEmpty (Either a b) -> These (NonEmpty a) (NonEmpty b)
 partitionEithersNE (x :| xs) = case (x, ls, rs) of
-    (Left y,  ys,     [])     -> This (y :| ys)
-    (Left y,  ys,     (z:zs)) -> These (y :| ys) (z :| zs)
-    (Right z, [],     zs)     -> That (z :| zs)
-    (Right z, (y:ys), zs)     -> These (y :| ys) (z :| zs)
+    (Left y,  ys,   [])   -> This (y :| ys)
+    (Left y,  ys,   z:zs) -> These (y :| ys) (z :| zs)
+    (Right z, [],   zs)   -> That (z :| zs)
+    (Right z, y:ys, zs)   -> These (y :| ys) (z :| zs)
   where
     (ls, rs) = partitionEithers xs
 
@@ -331,145 +309,3 @@
             1 -> That <$> get
             2 -> These <$> get <*> get
             _ -> fail "Invalid These index"
-
--------------------------------------------------------------------------------
--- semigroupoids
--------------------------------------------------------------------------------
-
-#ifdef MIN_VERSION_semigroupoids
-instance Bifoldable1 These where
-    bifold1 = these id id (<>)
-
-instance Bitraversable1 These where
-    bitraverse1 f _ (This x) = This <$> f x
-    bitraverse1 _ g (That x) = That <$> g x
-    bitraverse1 f g (These x y) = These <$> f x <.> g y
-
-instance (Semigroup a) => Bind (These a) where
-    This  a   >>- _ = This a
-    That    x >>- k = k x
-    These a x >>- k = case k x of
-                          This  b   -> This  (a <> b)
-                          That    y -> These a y
-                          These b y -> These (a <> b) y
-
-instance (Semigroup a) => Apply (These a) where
-    This  a   <.> _         = This a
-    That    _ <.> This  b   = This b
-    That    f <.> That    x = That (f x)
-    That    f <.> These b x = These b (f x)
-    These a _ <.> This  b   = This (a <> b)
-    These a f <.> That    x = These a (f x)
-    These a f <.> These b x = These (a <> b) (f x)
-#endif
-
--------------------------------------------------------------------------------
--- aeson
--------------------------------------------------------------------------------
-
-#ifdef MIN_VERSION_aeson
-
--- | @since 0.7.1
-instance (ToJSON a, ToJSON b) => ToJSON (These a b) where
-    toJSON (This a)    = Aeson.object [ "This" .= a ]
-    toJSON (That b)    = Aeson.object [ "That" .= b ]
-    toJSON (These a b) = Aeson.object [ "This" .= a, "That" .= b ]
-
-    toEncoding (This a)    = Aeson.pairs $ "This" .= a
-    toEncoding (That b)    = Aeson.pairs $ "That" .= b
-    toEncoding (These a b) = Aeson.pairs $ "This" .= a <> "That" .= b
-
--- | @since 0.7.1
-instance (FromJSON a, FromJSON b) => FromJSON (These a b) where
-    parseJSON = Aeson.withObject "These a b" (p . HM.toList)
-      where
-        p [("This", a), ("That", b)] = These <$> parseJSON a <*> parseJSON b
-        p [("That", b), ("This", a)] = These <$> parseJSON a <*> parseJSON b
-        p [("This", a)] = This <$> parseJSON a
-        p [("That", b)] = That <$> parseJSON b
-        p _  = fail "Expected object with 'This' and 'That' keys only"
-
--- | @since 0.7.2
-instance Aeson.ToJSON2 These where
-    liftToJSON2  toa _ _tob _ (This a)    = Aeson.object [ "This" .= toa a ]
-    liftToJSON2 _toa _  tob _ (That b)    = Aeson.object [ "That" .= tob b ]
-    liftToJSON2  toa _  tob _ (These a b) = Aeson.object [ "This" .= toa a, "That" .= tob b ]
-
-    liftToEncoding2  toa _ _tob _ (This a)    = Aeson.pairs $ Aeson.pair "This" (toa a)
-    liftToEncoding2 _toa _  tob _ (That b)    = Aeson.pairs $ Aeson.pair "That" (tob b)
-    liftToEncoding2  toa _  tob _ (These a b) = Aeson.pairs $ Aeson.pair "This" (toa a) <> Aeson.pair "That" (tob b)
-
--- | @since 0.7.2
-instance ToJSON a => Aeson.ToJSON1 (These a) where
-    liftToJSON _tob _ (This a)    = Aeson.object [ "This" .= a ]
-    liftToJSON  tob _ (That b)    = Aeson.object [ "That" .= tob b ]
-    liftToJSON  tob _ (These a b) = Aeson.object [ "This" .= a, "That" .= tob b ]
-
-    liftToEncoding _tob _ (This a)    = Aeson.pairs $ "This" .= a
-    liftToEncoding  tob _ (That b)    = Aeson.pairs $ Aeson.pair "That" (tob b)
-    liftToEncoding  tob _ (These a b) = Aeson.pairs $ "This" .= a <> Aeson.pair "That" (tob b)
-
--- | @since 0.7.2
-instance Aeson.FromJSON2 These where
-    liftParseJSON2 pa _ pb _ = Aeson.withObject "These a b" (p . HM.toList)
-      where
-        p [("This", a), ("That", b)] = These <$> pa a <*> pb b
-        p [("That", b), ("This", a)] = These <$> pa a <*> pb b
-        p [("This", a)] = This <$> pa a
-        p [("That", b)] = That <$> pb b
-        p _  = fail "Expected object with 'This' and 'That' keys only"
-
--- | @since 0.7.2
-instance FromJSON a => Aeson.FromJSON1 (These a) where
-    liftParseJSON pb _ = Aeson.withObject "These a b" (p . HM.toList)
-      where
-        p [("This", a), ("That", b)] = These <$> parseJSON a <*> pb b
-        p [("That", b), ("This", a)] = These <$> parseJSON a <*> pb b
-        p [("This", a)] = This <$> parseJSON a
-        p [("That", b)] = That <$> pb b
-        p _  = fail "Expected object with 'This' and 'That' keys only"
-#endif
-
--------------------------------------------------------------------------------
--- QuickCheck
--------------------------------------------------------------------------------
-
-#ifdef MIN_VERSION_QuickCheck
--- | @since 0.7.4
-instance Arbitrary2 These where
-    liftArbitrary2 arbA arbB = oneof
-        [ This <$> arbA
-        , That <$> arbB
-        , These <$> arbA <*> arbB
-        ]
-
-    liftShrink2  shrA _shrB (This x) = This <$> shrA x
-    liftShrink2 _shrA  shrB (That y) = That <$> shrB y
-    liftShrink2  shrA  shrB (These x y) =
-        [This x, That y] ++ [These x' y' | (x', y') <- liftShrink2 shrA shrB (x, y)]
-
--- | @since 0.7.4
-instance (Arbitrary a) => Arbitrary1 (These a) where
-    liftArbitrary = liftArbitrary2 arbitrary
-    liftShrink = liftShrink2 shrink
-
--- | @since 0.7.1
-instance (Arbitrary a, Arbitrary b) => Arbitrary (These a b) where
-    arbitrary = arbitrary1
-    shrink = shrink1
-
--- | @since 0.7.1
-instance (Function a, Function b) => Function (These a b) where
-  function = functionMap g f
-    where
-      g (This a)    = Left a
-      g (That b)    = Right (Left b)
-      g (These a b) = Right (Right (a, b))
-
-      f (Left a)               = This a
-      f (Right (Left b))       = That b
-      f (Right (Right (a, b))) = These a b
-
--- | @since 0.7.1
-instance (CoArbitrary a, CoArbitrary b) => CoArbitrary (These a b)
-#endif
diff --git a/src/Data/These/Combinators.hs b/src/Data/These/Combinators.hs
--- a/src/Data/These/Combinators.hs
+++ b/src/Data/These/Combinators.hs
@@ -1,5 +1,5 @@
+{-# LANGUAGE CPP         #-}
 {-# LANGUAGE Trustworthy #-}
-{-# LANGUAGE CPP #-}
 -- | This module provides
 --
 -- * specialised versions of class members e.g. 'bitraverseThese'
@@ -83,9 +83,9 @@
 import Prelude ()
 import Prelude.Compat
 
-import Data.Bifunctor       (bimap, first, second)
-import Data.Bitraversable   (bitraverse)
-import Data.Maybe           (isJust, mapMaybe)
+import Data.Bifunctor     (bimap, first, second)
+import Data.Bitraversable (bitraverse)
+import Data.Maybe         (isJust, mapMaybe)
 import Data.These
 
 #ifdef MIN_VERSION_assoc
diff --git a/these.cabal b/these.cabal
--- a/these.cabal
+++ b/these.cabal
@@ -1,6 +1,6 @@
 cabal-version:      >=1.10
 name:               these
-version:            1.0.1
+version:            1.1
 synopsis:           An either-or-both data type.
 homepage:           https://github.com/isomorphism/these
 license:            BSD3
@@ -31,32 +31,27 @@
   * <http://hackage.haskell.org/package/monad-chronicle monad-chronicle> For transformers variant of @These@.
 
 tested-with:
-  GHC ==7.4.2 || ==7.6.3 || ==7.8.4 || ==7.10.3 || ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1
+    GHC ==7.4.2
+     || ==7.6.3
+     || ==7.8.4
+     || ==7.10.3
+     || ==8.0.2
+     || ==8.2.2
+     || ==8.4.4
+     || ==8.6.5
+     || ==8.8.3
+     || ==8.10.1
+  , GHCJS ==8.4
 
 source-repository head
   type:     git
   location: https://github.com/isomorphism/these.git
 
-flag aeson
-  description: Build with aeson dependency
-  manual:      True
-  default:     True
-
 flag assoc
   description: Build with assoc dependency
   manual:      True
   default:     True
 
-flag semigroupoids
-  description: Build with semigroupoids dependency
-  manual:      True
-  default:     True
-
-flag QuickCheck
-  description: Build with QuickCheck dependency
-  manual:      True
-  default:     True
-
 library
   default-language: Haskell2010
   ghc-options:      -Wall
@@ -72,13 +67,13 @@
 
   -- ghc boot libs
   build-depends:
-      base     >=4.5.1.0 && <4.13
+      base     >=4.5.1.0 && <4.15
     , binary   >=0.5.1.0 && <0.10
     , deepseq  >=1.3.0.0 && <1.5
 
   -- other dependencies
   build-depends:
-      base-compat  >=0.10.5  && <0.11
+      base-compat  >=0.10.5  && <0.12
     , hashable     >=1.2.7.0 && <1.4
 
   if impl(ghc <7.5)
@@ -97,16 +92,5 @@
     if impl(ghc >=7.10)
       build-depends: transformers >=0.4.2.0
 
-  if flag(aeson)
-    build-depends:
-        aeson                 >=1.4.2.0 && <1.5
-      , unordered-containers  >=0.2.8.0 && <0.3
-
   if flag(assoc)
     build-depends: assoc >=1 && <1.1
-
-  if flag(semigroupoids)
-    build-depends: semigroupoids >=5.3.2 && <5.4
-
-  if flag(quickcheck)
-    build-depends: QuickCheck >=2.12.6.1 && <2.14
