diff --git a/Data/IntCast.hs b/Data/IntCast.hs
--- a/Data/IntCast.hs
+++ b/Data/IntCast.hs
@@ -58,6 +58,7 @@
 import GHC.TypeLits
 import Data.Bits
 import Data.Type.Equality
+import Numeric.Natural (Natural)
 
 -- | (Kind) Meta-information about integral types.
 --
@@ -79,7 +80,8 @@
 -- information about the value range of an integral type.
 --
 -- This module also provides type family instances for the standard
--- Haskell 2010 integral types (including "Foreign.C.Types").
+-- Haskell 2010 integral types (including "Foreign.C.Types") as well
+-- as the 'Natural' type.
 --
 -- Here's a simple example for registering a custom type with the
 -- "Data.IntCast" facilities:
@@ -102,21 +104,22 @@
 -- ordering based on the types above. See also 'intCast'.
 type family IntBaseType a :: IntBaseTypeK
 
-type instance IntBaseType Integer = BigIntTag
+type instance IntBaseType Integer = 'BigIntTag
+type instance IntBaseType Natural = 'BigWordTag
 
 -- Haskell2010 Basic fixed-width Integer Types
-type instance IntBaseType Int8   = FixedIntTag  8
-type instance IntBaseType Int16  = FixedIntTag  16
-type instance IntBaseType Int32  = FixedIntTag  32
-type instance IntBaseType Int64  = FixedIntTag  64
-type instance IntBaseType Word8  = FixedWordTag 8
-type instance IntBaseType Word16 = FixedWordTag 16
-type instance IntBaseType Word32 = FixedWordTag 32
-type instance IntBaseType Word64 = FixedWordTag 64
+type instance IntBaseType Int8   = 'FixedIntTag  8
+type instance IntBaseType Int16  = 'FixedIntTag  16
+type instance IntBaseType Int32  = 'FixedIntTag  32
+type instance IntBaseType Int64  = 'FixedIntTag  64
+type instance IntBaseType Word8  = 'FixedWordTag 8
+type instance IntBaseType Word16 = 'FixedWordTag 16
+type instance IntBaseType Word32 = 'FixedWordTag 32
+type instance IntBaseType Word64 = 'FixedWordTag 64
 
 #if defined(WORD_SIZE_IN_BITS)
-type instance IntBaseType Int    = FixedIntTag  WORD_SIZE_IN_BITS
-type instance IntBaseType Word   = FixedWordTag WORD_SIZE_IN_BITS
+type instance IntBaseType Int    = {-'-} 'FixedIntTag  WORD_SIZE_IN_BITS
+type instance IntBaseType Word   = {-'-} 'FixedWordTag WORD_SIZE_IN_BITS
 #else
 #error Cannot determine bit-size of 'Int'/'Word' type
 #endif
@@ -144,37 +147,37 @@
 -- Internal class providing the partial order of (improper) subtype-relations
 type family IsIntBaseSubType a b :: Bool where
     -- this relation is reflexive
-    IsIntBaseSubType a                a                = True
+    IsIntBaseSubType a                 a                 = 'True
 
     -- Every integer is a subset of 'Integer'
-    IsIntBaseSubType a                BigIntTag        = True
+    IsIntBaseSubType a                 'BigIntTag        = 'True
 
     -- Even though Haskell2010 doesn't provide naturals, we can use the
     -- tag 'Nat' to denote such entities
-    IsIntBaseSubType (FixedWordTag a) BigWordTag       = True
+    IsIntBaseSubType ('FixedWordTag a) 'BigWordTag       = 'True
 
     -- sub-type relations between fixed-with types
-    IsIntBaseSubType (FixedIntTag  a) (FixedIntTag  b) = a   <=? b
-    IsIntBaseSubType (FixedWordTag a) (FixedWordTag b) = a   <=? b
-    IsIntBaseSubType (FixedWordTag a) (FixedIntTag  b) = a+1 <=? b
+    IsIntBaseSubType ('FixedIntTag  a) ('FixedIntTag  b) = a   <=? b
+    IsIntBaseSubType ('FixedWordTag a) ('FixedWordTag b) = a   <=? b
+    IsIntBaseSubType ('FixedWordTag a) ('FixedIntTag  b) = a+1 <=? b
 
     -- everything else is not a sub-type
-    IsIntBaseSubType a                b               = False
+    IsIntBaseSubType a                 b                 = 'False
 
 type IsIntSubType a b = IsIntBaseSubType (IntBaseType a) (IntBaseType b)
 
 -- Same bit-size predicate
 type family IsIntBaseTypeIso a b :: Bool where
-    IsIntBaseTypeIso a                a                = True
-    IsIntBaseTypeIso (FixedIntTag  n) (FixedWordTag n) = True
-    IsIntBaseTypeIso (FixedWordTag n) (FixedIntTag  n) = True
-    IsIntBaseTypeIso a                b                = False
+    IsIntBaseTypeIso a                 a                 = 'True
+    IsIntBaseTypeIso ('FixedIntTag  n) ('FixedWordTag n) = 'True
+    IsIntBaseTypeIso ('FixedWordTag n) ('FixedIntTag  n) = 'True
+    IsIntBaseTypeIso a                 b                 = 'False
 
 type IsIntTypeIso a b = IsIntBaseTypeIso (IntBaseType a) (IntBaseType b)
 
 type family IsIntBaseTypeEq (a :: IntBaseTypeK) (b :: IntBaseTypeK) :: Bool where
-    IsIntBaseTypeEq a a = True
-    IsIntBaseTypeEq a b = False
+    IsIntBaseTypeEq a a = 'True
+    IsIntBaseTypeEq a b = 'False
 
 type IsIntTypeEq a b = IsIntBaseTypeEq (IntBaseType a) (IntBaseType b)
 
@@ -187,7 +190,7 @@
 -- Note: This is just a type-restricted alias of 'fromIntegral' and
 -- should therefore lead to the same compiled code as if
 -- 'fromIntegral' had been used instead of 'intCast'.
-intCast :: (Integral a, Integral b, IsIntSubType a b ~ True) => a -> b
+intCast :: (Integral a, Integral b, IsIntSubType a b ~ 'True) => a -> b
 intCast = fromIntegral
 {-# INLINE intCast #-}
 
@@ -200,12 +203,12 @@
 -- Note: This is just a type-restricted alias of 'fromIntegral' and
 -- should therefore lead to the same compiled code as if
 -- 'fromIntegral' had been used instead of 'intCast'.
-intCastIso :: (Integral a, Integral b, IsIntTypeIso a b ~ True) => a -> b
+intCastIso :: (Integral a, Integral b, IsIntTypeIso a b ~ 'True) => a -> b
 intCastIso = fromIntegral
 {-# INLINE intCastIso #-}
 
 -- | Version of 'intCast' restricted to casts between types with same value domain.
-intCastEq :: (Integral a, Integral b, IsIntTypeEq a b ~ True) => a -> b
+intCastEq :: (Integral a, Integral b, IsIntTypeEq a b ~ 'True) => a -> b
 intCastEq = fromIntegral
 {-# INLINE intCastEq #-}
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,9 @@
+## 0.1.2.0
+
+  - Add support for GHC 7.10
+
+  - Add support for `Natural`
+
 ## 0.1.1.0
 
   * Fix `intCastIso` to be reflexive wrt non-fixed integer types
diff --git a/int-cast.cabal b/int-cast.cabal
--- a/int-cast.cabal
+++ b/int-cast.cabal
@@ -1,5 +1,5 @@
 name:                int-cast
-version:             0.1.1.0
+version:             0.1.2.0
 synopsis:            Checked conversions between integral types
 homepage:            https://github.com/hvr/int-cast
 bug-reports:         https://github.com/hvr/int-cast/issues
@@ -19,11 +19,6 @@
     type:     git
     location: https://github.com/hvr/int-cast.git
 
-source-repository this
-    type:     git
-    location: https://github.com/hvr/int-cast.git
-    tag:      0.1.1.0
-
 library
   default-language:    Haskell2010
   other-extensions:
@@ -32,7 +27,10 @@
     TypeFamilies
     TypeOperators
     UndecidableInstances
-  build-depends:       base ==4.7.*
+  build-depends:       base >=4.7 && <4.9
+  if !impl(ghc>=7.10)
+    build-depends: nats >=0.1 && <1.1
+
   exposed-modules:     Data.IntCast
 
 test-suite int-cast-test
@@ -41,4 +39,6 @@
   hs-source-dirs:      test .
   main-is:             Suite.hs
   ghc-options:         -Wall
-  build-depends:       int-cast, base, QuickCheck ==2.6.*, test-framework ==0.8.*, test-framework-quickcheck2 ==0.3.*, nats ==0.1.*
+  build-depends:       int-cast, base, QuickCheck ==2.7.*, test-framework ==0.8.*, test-framework-quickcheck2 ==0.3.*
+  if !impl(ghc>=7.10)
+    build-depends: nats
