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.1.0.0
+version: 1.2.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -41,10 +41,16 @@
         base >=4.8 && <5,
         ansi-wl-pprint -any,
         containers >=0.5.9,
-        micro-recursion-schemes -any,
         microlens -any,
         binary -any,
         deepseq -any
+    
+    if impl(ghc >=8.2)
+        build-depends:
+            micro-recursion-schemes -any
+    else
+        build-depends:
+            recursion-schemes >=5.1
     
     if impl(ghc <8.0)
         build-depends:
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
@@ -25,13 +25,14 @@
 import           Data.Semigroup
 import qualified Data.Set                     as S
 import           GHC.Generics                 (Generic)
+import           GHC.Natural                  (Natural)
 import           Text.PrettyPrint.ANSI.Leijen hiding ((<$>), (<>))
 
 -- | 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) }
     deriving (Eq, Ord, Foldable, Generic, Binary)
 
-newtype Version = Version [Integer]
+newtype Version = Version [Natural]
     deriving (Eq, Generic, NFData, Binary)
 
 instance Show Version where
