diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+# dependency
+
+## 1.2.0.3
+
+  * Fewer dependencies
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/dependency.cabal b/dependency.cabal
--- a/dependency.cabal
+++ b/dependency.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: dependency
-version: 1.2.0.1
+version: 1.2.0.3
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -12,6 +12,7 @@
 category: Development, Build
 build-type: Simple
 extra-doc-files: README.md
+                 CHANGELOG.md
 
 source-repository head
     type: darcs
@@ -33,26 +34,18 @@
         Data.Dependency.Sort
     default-language: Haskell2010
     other-extensions: DeriveAnyClass DeriveGeneric OverloadedStrings
-                      DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable
-                      OverloadedStrings TypeFamilies TupleSections
+                      DeriveFoldable DeriveFunctor TupleSections
     ghc-options: -Wall -Wincomplete-uni-patterns
                  -Wincomplete-record-updates -Wcompat
     build-depends:
-        base >=4.11 && <5,
+        base >=4.9 && <5,
         ansi-wl-pprint -any,
         containers >=0.5.9,
         microlens -any,
         binary -any,
         deepseq -any
     
-    if impl(ghc >=8.2)
-        build-depends:
-            micro-recursion-schemes -any
-    else
-        build-depends:
-            recursion-schemes >=5.0.1
-    
-    if flag(development)
+    if (flag(development) && impl(ghc <8.4))
         ghc-options: -Werror
 
 test-suite dependency-test
diff --git a/src/Data/Dependency/Type.hs b/src/Data/Dependency/Type.hs
--- a/src/Data/Dependency/Type.hs
+++ b/src/Data/Dependency/Type.hs
@@ -1,10 +1,7 @@
-{-# LANGUAGE DeriveAnyClass    #-}
-{-# LANGUAGE DeriveFoldable    #-}
-{-# LANGUAGE DeriveFunctor     #-}
-{-# LANGUAGE DeriveGeneric     #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE PatternSynonyms   #-}
-{-# LANGUAGE TypeFamilies      #-}
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveFunctor  #-}
+{-# LANGUAGE DeriveGeneric  #-}
 
 module Data.Dependency.Type ( Dependency (..)
                             , Version (..)
@@ -14,15 +11,14 @@
                             , check
                             ) where
 
-import           Control.DeepSeq              (NFData)
+import           Control.DeepSeq (NFData)
 import           Data.Binary
-import           Data.Functor.Foldable
-import           Data.List                    (intercalate)
-import qualified Data.Map                     as M
-import qualified Data.Set                     as S
-import           GHC.Generics                 (Generic)
-import           GHC.Natural                  (Natural)
-import           Text.PrettyPrint.ANSI.Leijen hiding ((<$>), (<>))
+import           Data.List       (intercalate)
+import qualified Data.Map        as M
+import           Data.Semigroup
+import qualified Data.Set        as S
+import           GHC.Generics    (Generic)
+import           GHC.Natural     (Natural)
 
 -- | A package set is simply a map between package names and a set of packages.
 newtype PackageSet a = PackageSet { _packageSet :: M.Map String (S.Set a) }
@@ -77,27 +73,3 @@
 satisfies (Eq x) y            = x == y
 satisfies (Bounded x y) z     = satisfies x z && satisfies y z
 satisfies None _              = True
-
-data ConstraintF a x = LessThanEqF a
-                     | GreaterThanEqF a
-                     | EqF a
-                     | BoundedF x x
-                     | NoneF
-                     deriving (Functor)
-
-type instance Base (Constraint a) = ConstraintF a
-
-instance Recursive (Constraint a) where
-    project (LessThanEq x)    = LessThanEqF x
-    project (GreaterThanEq x) = GreaterThanEqF x
-    project (Eq x)            = EqF x
-    project (Bounded x y)     = BoundedF x y
-    project None              = NoneF
-
-instance Pretty a => Pretty (Constraint a) where
-    pretty = cata a where
-        a (LessThanEqF v)    = "≤" <+> pretty v
-        a (GreaterThanEqF v) = "≥" <+> pretty v
-        a (EqF v)            = "≡" <+> pretty v
-        a (BoundedF c c')    = c <+> "∧" <+> c'
-        a NoneF              = mempty
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -21,12 +21,22 @@
 defV :: Version
 defV = Version [0,1,0]
 
+specNew :: Dependency
+specNew = Dependency "spec" mempty (Version [0,2,0])
+
+specOld :: Dependency
+specOld = Dependency "spec" ((,LessThanEq (Version [0,1,0])) <$> ["spec"]) (Version [0,1,0])
+
 ghcMod :: Dependency
 ghcMod = Dependency "ghc-mod" [("lens", LessThanEq defV)] defV
 
 mapSingles :: [(d, b)] -> [(d, S.Set b)]
 mapSingles = fmap (second S.singleton)
 
+set' :: PackageSet Dependency
+set' = PackageSet $
+    M.singleton "spec" (S.fromList [specOld, specNew])
+
 set :: PackageSet Dependency
 set = PackageSet $
     M.fromList (("lens", S.fromList [lens, newLens]) :
@@ -39,3 +49,5 @@
         resolveDependencies set [newLens] `shouldBe` Right [[free, comonad], [newLens]]
     it "correctly resolves dependencies in a package set" $
         resolveDependencies set [ghcMod] `shouldBe` Right [[free, comonad], [lens], [ghcMod]]
+    it "correctly resolves dependencies in a package set" $
+        resolveDependencies set' [specOld] `shouldBe` Right [[specOld]]
