diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 # Changelog for mono-traversable-keys
 
-## _0.1.0_ Unreleased changes
+## _0.2.0_
+
+	* Added support for GHC-9.2
+	* Conditional inclusion of many import to support backwards compatability
+
+## _0.1.0_ Initial version
 
 	* Added `MonoAdjustable` type-class and initial instances
 	* Added `MonoIndexable` type-class and initial instances
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,12 @@
-# mono-traversable-keys
+## Type-classes for interacting with monomorphic containers with a key
 
-Provides type-classes for interacting with monomorphic containers in the following was:
+[![Build Status](https://travis-ci.org/recursion-ninja/mono-traversable-keys.svg?branch=master)](https://travis-ci.org/recursion-ninja/mono-traversable-keys)
+[![License FreeBSD](https://img.shields.io/badge/license-FreeBSD-brightgreen.svg)](http://opensource.org/licenses/BSD-3-Clause)
+[![Hackage](https://img.shields.io/hackage/v/mono-traversable-keys.svg?style=flat)](https://hackage.haskell.org/package/mono-traversable-keys)
+[![Stackage Nightly](http://stackage.org/package/mono-traversable-keys/badge/nightly)](http://stackage.org/nightly/package/mono-traversable-keys)
+[![Stackage LTS](http://stackage.org/package/mono-traversable-keys/badge/lts)](http://stackage.org/lts/package/mono-traversable-keys)
+
+Provides type-classes for interacting with monomorphic containers in the following ways:
 
  * zipping
  * adjusting an element at a key
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/mono-traversable-keys.cabal b/mono-traversable-keys.cabal
--- a/mono-traversable-keys.cabal
+++ b/mono-traversable-keys.cabal
@@ -1,7 +1,7 @@
 cabal-version: 1.12
 
 name:           mono-traversable-keys
-version:        0.1.0
+version:        0.2.0
 synopsis:       Type-classes for interacting with monomorphic containers with a key
 category:       Containers, Data, Data Structures
 build-type:     Simple
@@ -24,7 +24,11 @@
   CHANGELOG.md
 
 tested-with:
-  GHC == 8.6.3
+  GHC == 9.2.1
+  GHC == 9.0.1
+  GHC == 8.10.7
+  GHC == 8.8.4
+  GHC == 8.6.5
   GHC == 8.4.4
   GHC == 8.2.2
   GHC == 8.0.2
@@ -43,12 +47,15 @@
       hashable             >= 1.2     && < 2.0,          
       keys                 >= 3       && < 4.0,          
       mono-traversable     >= 1       && < 2.0,          
-      semigroups           >= 0.8.3.1 && < 1.0,
       text                 >= 0.11    && < 2.0,
       transformers         >= 0.2     && < 1.0,
       unordered-containers >= 0.2.4   && < 1.0,
       vector               >= 0.10    && < 1.0,
       vector-instances     >= 3.4     && < 4.0
+
+  if impl(ghc < 8.0)
+    build-depends:
+      semigroups           >= 0.8.3.1 && < 1.0
                 
   default-language:
       Haskell2010
@@ -79,6 +86,14 @@
       -fwarn-unused-imports
       -fwarn-unused-matches
       -fwarn-wrong-do-bind
+      -- Lots of false positives reported,
+      -- due to supporting backwards compatability
+      -fno-warn-deprecations
 
+  if impl(ghc >= 8.10)
+    ghc-options:
+      -fwarn-deriving-defaults
+      -fwarn-unused-packages
+      
   hs-source-dirs:
       src
diff --git a/src/Data/MonoTraversable/Keys.hs b/src/Data/MonoTraversable/Keys.hs
--- a/src/Data/MonoTraversable/Keys.hs
+++ b/src/Data/MonoTraversable/Keys.hs
@@ -15,6 +15,7 @@
 -- been prefixed with @o@. The mnemonic is inherited from 'Data.MonoTraversable'.
 
 {-# LANGUAGE BangPatterns            #-}
+{-# LANGUAGE CPP                     #-}
 {-# LANGUAGE ConstrainedClassMethods #-}
 {-# LANGUAGE DefaultSignatures       #-}
 {-# LANGUAGE FlexibleContexts        #-}
@@ -45,7 +46,10 @@
 import           Control.Applicative
 import           Control.Arrow                            (Arrow)
 --import           Control.Comonad.Cofree                   (Cofree(..))
+#if MIN_VERSION_base(4,13,0)
+#else
 import           Control.Monad                            (Monad (..))
+#endif
 --import           Control.Monad.Free
 import           Control.Monad.Trans.Cont                 (ContT)
 import           Control.Monad.Trans.Identity             (IdentityT)
@@ -69,7 +73,10 @@
 import qualified Data.HashMap.Strict               as HM
 import           Data.HashSet                             (HashSet)
 import qualified Data.HashSet                      as HS
+#if MIN_VERSION_base(4,13,0)
+#else
 import           Data.Int                                 (Int)
+#endif
 import           Data.IntMap                              (IntMap)
 import qualified Data.IntMap                       as IM
 import           Data.IntSet                              (IntSet)
@@ -79,10 +86,23 @@
 import           Data.Map                                 (Map)
 import qualified Data.Map.Strict                   as Map
 import           Data.Maybe
+#if MIN_VERSION_base(4,13,0)
+#else
 import           Data.Monoid                              (Monoid(..))
+#endif
 import           Data.MonoTraversable                     (Element, MonoFoldable(..), MonoFunctor(..), MonoTraversable(..))
 --import           Data.Proxy
-import           Data.Semigroup                           (Semigroup(..), Arg(..), Dual(..), Endo(..), Option(..))
+import           Data.Semigroup                           (
+#if MIN_VERSION_base(4,11,0)
+#else
+                                                           Semigroup(..),
+#endif
+                                                           Arg(..), Dual(..), Endo(..)
+#if MIN_VERSION_base(4,16,0)
+#else
+                                                          , Option(..)
+#endif
+                                                          )
 import           Data.Sequence                            (Seq, ViewL(..), ViewR(..))
 import qualified Data.Sequence                     as Seq
 import           Data.Set                                 (Set)
@@ -136,7 +156,10 @@
 type instance MonoKey (MaybeT m a)         = ()
 --type instance MonoKey (M1 i c f a)         = Key (M1 i c f)
 type instance MonoKey (NonEmpty a)         = Int
+#if MIN_VERSION_base(4,16,0)
+#else
 type instance MonoKey (Option a)           = ()
+#endif
 --type instance MonoKey (Par1 a)             = ()
 type instance MonoKey (Product f g a)      = Either (Key f) (Key g)
 --type instance MonoKey (Proxy a)            = Void
@@ -448,12 +471,15 @@
 instance MonoKeyed (NonEmpty a)
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoKeyed (Option a) where
     {-# INLINE omapWithKey #-}
 
     omapWithKey = omapWithUnitKey
+#endif
 
 
 -- |
@@ -782,12 +808,15 @@
     ofoldlWithKey   = monoFoldableWithIntegralKey
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoFoldableWithKey (Option a) where
     {-# INLINE ofoldMapWithKey #-}
 
     ofoldMapWithKey = monoFoldableWithUnitKey
+#endif
 
 
 -- |
@@ -1069,12 +1098,15 @@
     otraverseWithKey = traverseWithKey
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoTraversableWithKey (Option a) where
     {-# INLINE otraverseWithKey #-}
 
     otraverseWithKey = monoTraversableWithUnitKey
+#endif
 
 
 -- |
@@ -1323,12 +1355,15 @@
     olookup = lookup
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoLookup (Option a) where
     {-# INLINE olookup #-}
 
     olookup = const getOption
+#endif
 
 
 -- |
@@ -1598,6 +1633,8 @@
     oindex = index
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoIndexable (Option a) where
@@ -1607,6 +1644,7 @@
       where
         errorMessage = error 
             "oindex on empty Option, cannot retreive a value. Consider using olookup instead."
+#endif
 
 
 -- |
@@ -1908,12 +1946,15 @@
     oadjust = adjust
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoAdjustable (Option a) where
     {-# INLINE oadjust #-}
 
     oadjust f = const $ fmap f
+#endif
 
 
 -- |
@@ -2269,12 +2310,15 @@
     ozipWith f (x:|xs) (y :|ys) = f x y :| zipWith f xs ys
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoZip (Option a) where
     {-# INLINE ozipWith #-}
 
     ozipWith = liftA2
+#endif
 
 
 -- |
@@ -2631,12 +2675,15 @@
     ozipWithKey = zipWithKey
 
 
+#if MIN_VERSION_base(4,16,0)
+#else
 -- |
 -- @since 0.1.0 
 instance MonoZipWithKey (Option a) where
     {-# INLINE ozipWithKey #-}
 
     ozipWithKey f = liftA2 (f ())
+#endif
 
 
 -- |
