diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+## [1.0.0.2] - 2022-08-30
+
+### Added
+
+* `GenValid a => GenValid (IntMap a)`
+
 ## [1.0.0.1] - 2022-08-30
 
 ### Added
diff --git a/genvalidity-containers.cabal b/genvalidity-containers.cabal
--- a/genvalidity-containers.cabal
+++ b/genvalidity-containers.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.7.
+-- This file has been generated from package.yaml by hpack version 0.36.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           genvalidity-containers
-version:        1.0.0.1
+version:        1.0.0.2
 synopsis:       GenValidity support for containers
 category:       Testing
 homepage:       https://github.com/NorfairKing/validity#readme
@@ -27,6 +27,7 @@
 library
   exposed-modules:
       Data.GenValidity.Containers
+      Data.GenValidity.IntMap
       Data.GenValidity.Map
       Data.GenValidity.Sequence
       Data.GenValidity.Set
@@ -48,6 +49,7 @@
   type: exitcode-stdio-1.0
   main-is: Spec.hs
   other-modules:
+      Data.GenValidity.Containers.IntMapSpec
       Data.GenValidity.Containers.MapSpec
       Data.GenValidity.Containers.SeqSpec
       Data.GenValidity.Containers.SetSpec
diff --git a/src/Data/GenValidity/Containers.hs b/src/Data/GenValidity/Containers.hs
--- a/src/Data/GenValidity/Containers.hs
+++ b/src/Data/GenValidity/Containers.hs
@@ -3,6 +3,7 @@
   )
 where
 
+import Data.GenValidity.IntMap as Containers
 import Data.GenValidity.Map as Containers
 import Data.GenValidity.Sequence as Containers
 import Data.GenValidity.Set as Containers
diff --git a/src/Data/GenValidity/IntMap.hs b/src/Data/GenValidity/IntMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/GenValidity/IntMap.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module Data.GenValidity.IntMap
+  ( genIntMapOf,
+    shrinkIntMapOf,
+  )
+where
+
+import Data.GenValidity
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as M
+import Data.Validity.IntMap ()
+import Test.QuickCheck
+
+instance (GenValid v) => GenValid (IntMap v) where
+  genValid = genIntMapOf genValid
+  shrinkValid = shrinkIntMapOf shrinkValid
+
+genIntMapOf :: Gen (Int, v) -> Gen (IntMap v)
+genIntMapOf g = M.fromList <$> genListOf g
+
+shrinkIntMapOf :: ((Int, v) -> [(Int, v)]) -> IntMap v -> [IntMap v]
+shrinkIntMapOf shrinker = fmap M.fromList . shrinkList shrinker . M.toList
diff --git a/src/Data/GenValidity/Map.hs b/src/Data/GenValidity/Map.hs
--- a/src/Data/GenValidity/Map.hs
+++ b/src/Data/GenValidity/Map.hs
@@ -16,8 +16,8 @@
   genValid = genMapOf genValid
   shrinkValid = shrinkMapOf shrinkValid
 
-genMapOf :: Ord k => Gen (k, v) -> Gen (Map k v)
+genMapOf :: (Ord k) => Gen (k, v) -> Gen (Map k v)
 genMapOf g = M.fromList <$> genListOf g
 
-shrinkMapOf :: Ord k => ((k, v) -> [(k, v)]) -> Map k v -> [Map k v]
+shrinkMapOf :: (Ord k) => ((k, v) -> [(k, v)]) -> Map k v -> [Map k v]
 shrinkMapOf shrinker = fmap M.fromList . shrinkList shrinker . M.toList
diff --git a/src/Data/GenValidity/Sequence.hs b/src/Data/GenValidity/Sequence.hs
--- a/src/Data/GenValidity/Sequence.hs
+++ b/src/Data/GenValidity/Sequence.hs
@@ -13,7 +13,7 @@
 import Data.Validity.Sequence ()
 import Test.QuickCheck
 
-instance GenValid v => GenValid (Seq v) where
+instance (GenValid v) => GenValid (Seq v) where
   genValid = genSeqOf genValid
   shrinkValid = shrinkSeqOf shrinkValid
 
diff --git a/src/Data/GenValidity/Set.hs b/src/Data/GenValidity/Set.hs
--- a/src/Data/GenValidity/Set.hs
+++ b/src/Data/GenValidity/Set.hs
@@ -24,10 +24,10 @@
   genValid = genSetOf genValid
   shrinkValid = shrinkSetOf shrinkValid
 
-genSetOf :: Ord v => Gen v -> Gen (Set v)
+genSetOf :: (Ord v) => Gen v -> Gen (Set v)
 genSetOf g = S.fromList <$> genListOf g
 
-shrinkSetOf :: Ord v => (v -> [v]) -> Set v -> [Set v]
+shrinkSetOf :: (Ord v) => (v -> [v]) -> Set v -> [Set v]
 shrinkSetOf shrinker = fmap S.fromList . shrinkList shrinker . S.toList
 
 genValidSeperateFor :: (GenValid b, Eq b) => [a] -> Gen [(b, a)]
@@ -36,15 +36,15 @@
 genValidSeperateForNE :: (GenValid b, Eq b) => NonEmpty a -> Gen (NonEmpty (b, a))
 genValidSeperateForNE = genSeperateForNE genValid
 
-genSeperate :: Ord a => Gen a -> Gen [a]
+genSeperate :: (Ord a) => Gen a -> Gen [a]
 genSeperate g = nubOrd <$> genListOf g
 
 -- TODO these two can likely be optimised
-genSeperateFor :: Eq b => Gen b -> [a] -> Gen [(b, a)]
+genSeperateFor :: (Eq b) => Gen b -> [a] -> Gen [(b, a)]
 genSeperateFor _ [] = pure []
 genSeperateFor g (a : as) = NE.toList <$> genSeperateForNE g (a :| as)
 
-genSeperateForNE :: Eq b => Gen b -> NonEmpty a -> Gen (NonEmpty (b, a))
+genSeperateForNE :: (Eq b) => Gen b -> NonEmpty a -> Gen (NonEmpty (b, a))
 genSeperateForNE g (a :| as) = do
   restTups <- genSeperateFor g as
   b <- g `suchThat` (`notElem` map fst restTups)
diff --git a/src/Data/GenValidity/Tree.hs b/src/Data/GenValidity/Tree.hs
--- a/src/Data/GenValidity/Tree.hs
+++ b/src/Data/GenValidity/Tree.hs
@@ -9,7 +9,7 @@
 import Data.Validity.Tree ()
 import Test.QuickCheck
 
-instance GenValid a => GenValid (Tree a) where
+instance (GenValid a) => GenValid (Tree a) where
   genValid = genTreeOf genValid
   shrinkValid = shrinkTreeOf shrinkValid
 
diff --git a/test/Data/GenValidity/Containers/IntMapSpec.hs b/test/Data/GenValidity/Containers/IntMapSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Data/GenValidity/Containers/IntMapSpec.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE TypeApplications #-}
+
+module Data.GenValidity.Containers.IntMapSpec where
+
+import Data.GenValidity
+import Data.GenValidity.IntMap
+import Data.IntMap (IntMap)
+import Test.Hspec
+import Test.Validity.GenValidity
+
+spec :: Spec
+spec = do
+  describe "genIntMapOf" $
+    it "produces valid maps" $
+      genGeneratesValid
+        (genIntMapOf @Rational genValid)
+  genValidSpec @(IntMap Rational)
+  genValidSpec @(IntMap Rational)
diff --git a/test/Data/GenValidity/Containers/SetSpec.hs b/test/Data/GenValidity/Containers/SetSpec.hs
--- a/test/Data/GenValidity/Containers/SetSpec.hs
+++ b/test/Data/GenValidity/Containers/SetSpec.hs
@@ -20,9 +20,11 @@
   genValidSpec @(Set Rational)
   describe "genSeperate" $ do
     it "generates values that are seperate" $
-      forAll (genSeperate genValid) $ \ls -> distinctOrd (ls :: [Int])
+      forAll (genSeperate genValid) $
+        \ls -> distinctOrd (ls :: [Int])
     it "generates values that are seperate" $
-      forAll (genSeperate genValid) $ \ls -> distinctOrd (ls :: [Int])
+      forAll (genSeperate genValid) $
+        \ls -> distinctOrd (ls :: [Int])
   describe "genSeperateFor" $ do
     it "generates values that are seperate" $
       forAllValid $ \ls ->
