diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 See also http://pvp.haskell.org/faq
 
+## 0.2.0.1
+
+* Allow `aeson-2.0` and `bytestring-0.11`.
+* Build tested with GHC 7.4 -- 9.0.
+
 ## 0.2.0.0
 
 This release incorporates the work from [Vijay Tadikamalla's GSOC 2019 Project](https://vijayphoenix.github.io/blog/gsoc-the-conclusion/).
diff --git a/HsYAML-aeson.cabal b/HsYAML-aeson.cabal
--- a/HsYAML-aeson.cabal
+++ b/HsYAML-aeson.cabal
@@ -1,10 +1,10 @@
 cabal-version:       2.2
 name:                HsYAML-aeson
-version:             0.2.0.0
+version:             0.2.0.1
 license:             GPL-2.0-or-later
 license-file:        LICENSE.GPLv2
 author:              Herbert Valerio Riedel
-maintainer:          hvr@gnu.org
+maintainer:          hvr@gnu.org, Andreas Abel
 copyright:           2018-2019 Herbert Valerio Riedel
 category:            Text, Codec, Web, JSON, YAML
 synopsis:            JSON to YAML Adapter
@@ -20,6 +20,19 @@
   convenience by reusing [aeson](https://hackage.haskell.org/package/aeson)'s
   'FromJSON' instances for decoding the YAML data into native Haskell data types.
 
+tested-with:
+  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
+  GHC == 7.10.3
+  GHC == 7.8.4
+  GHC == 7.6.3
+  GHC == 7.4.2
+
 extra-source-files:
   CHANGELOG.md
 
@@ -27,13 +40,18 @@
   type: git
   location: https://github.com/hvr/HsYAML-aeson.git
 
+flag exe
+  description: Enable @exe:yaml-test@ component
+  manual: True
+  default: False
+
 library
   exposed-modules: Data.YAML.Aeson
   build-depends:
     , HsYAML      ^>= 0.2.0
-    , aeson       ^>= 1.4.0.0
-    , base         >= 4.5 && < 4.14
-    , bytestring  ^>= 0.9.2.1 || ^>= 0.10.0.2
+    , aeson       ^>= 1.4.0.0 || ^>= 1.5.0.0 || ^>= 2.0.0.0
+    , base         >= 4.5 && < 4.17
+    , bytestring  ^>= 0.9.2.1 || ^>= 0.10.0.2 || ^>= 0.11.0.0
     , containers   >=0.4.2 && <0.7
     , mtl         ^>= 2.2.1
     , scientific  ^>= 0.3.6.2
@@ -45,3 +63,18 @@
   default-language:    Haskell2010
   other-extensions:    RecordWildCards Trustworthy
   ghc-options: -Wall
+
+executable yaml-test
+  hs-source-dirs:      src-test
+  main-is:             Main.hs
+  default-language:    Haskell2010
+
+  if flag(exe)
+    build-depends: HsYAML
+                 , HsYAML-aeson
+                 , base
+                 , aeson
+                 , bytestring
+                 , directory   >= 1.2 && < 1.4
+  else
+    buildable: False
diff --git a/LICENSE.GPLv2 b/LICENSE.GPLv2
--- a/LICENSE.GPLv2
+++ b/LICENSE.GPLv2
@@ -1,7 +1,6 @@
              GNU GENERAL PUBLIC LICENSE
                 Version 2, June 1991
 
-
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  Everyone is permitted to copy and distribute verbatim copies
diff --git a/src-test/Main.hs b/src-test/Main.hs
new file mode 100644
--- /dev/null
+++ b/src-test/Main.hs
@@ -0,0 +1,60 @@
+-- |
+-- Copyright: © Herbert Valerio Riedel 2018
+-- SPDX-License-Identifier: GPL-2.0-or-later
+--
+module Main where
+
+import qualified Data.Aeson                 as J
+import qualified Data.ByteString.Char8      as BS
+import qualified Data.ByteString.Lazy.Char8 as BS.L
+import           System.Environment
+import           System.Exit
+import           System.IO
+import           Data.YAML
+import           Data.YAML.Aeson
+
+main :: IO ()
+main = do
+  args <- getArgs
+
+  case args of
+    ("yaml2json":args')
+      | null args' -> cmdYaml2Json
+      | otherwise -> do
+          hPutStrLn stderr "unexpected arguments passed to yaml2json sub-command"
+          exitFailure
+
+    ("json2yaml":args')
+      | null args' -> cmdJson2Yaml
+      | otherwise -> do
+          hPutStrLn stderr "unexpected arguments passed to json2yaml sub-command"
+          exitFailure
+
+    _ -> do
+      hPutStrLn stderr "usage: yaml-test <command> [<args>]"
+      hPutStrLn stderr ""
+      hPutStrLn stderr "Commands:"
+      hPutStrLn stderr ""
+      hPutStrLn stderr "  yaml2json           reads YAML stream from STDIN and dumps JSON to STDOUT"
+      hPutStrLn stderr "  json2yaml           reads JSON stream from STDIN and dumps YAML to STDOUT"
+      exitFailure
+
+
+cmdYaml2Json :: IO ()
+cmdYaml2Json = do
+  inYamlDat <- BS.L.getContents
+  case decodeValue inYamlDat of
+    Left (loc, err) -> do
+      hPutStrLn stderr (prettyPosWithSource loc inYamlDat " error" ++ err)
+      exitFailure
+    Right x -> (BS.L.putStr . J.encode) x
+
+
+cmdJson2Yaml :: IO ()
+cmdJson2Yaml = do
+  inJsonDat <- BS.L.getContents
+  case J.eitherDecode inJsonDat of
+    Left e -> do
+      hPutStrLn stderr e
+      exitFailure
+    Right x -> (BS.L.putStr . encodeValue . return) x
diff --git a/src/Data/YAML/Aeson.hs b/src/Data/YAML/Aeson.hs
--- a/src/Data/YAML/Aeson.hs
+++ b/src/Data/YAML/Aeson.hs
@@ -39,6 +39,10 @@
 import           Control.Applicative    as Ap
 import           Control.Monad.Identity (runIdentity)
 import           Data.Aeson             as J
+#if MIN_VERSION_aeson(2,0,0)
+import qualified Data.Aeson.Key                as AK
+import qualified Data.Aeson.KeyMap             as AKM
+#endif
 import qualified Data.Aeson.Types       as J
 import qualified Data.ByteString        as BS
 import qualified Data.ByteString.Lazy   as BS.L
@@ -164,8 +168,13 @@
 
     mkPair :: Pos -> (J.Value,J.Value) -> Either (Pos, String) J.Pair
     mkPair pos (k, v) = case keyconv k of
-        Right k' -> Right (k', v)
+        Right k' -> Right (fT k', v)
         Left s   -> Left (pos, s)
+#if MIN_VERSION_aeson(2,0,0)
+    fT = AK.fromText
+#else
+    fT = id   
+#endif
 
     mkArr :: [J.Value] -> Either (Pos, String) J.Value
     mkArr xs = Right $! J.Array $! V.fromList xs
@@ -207,7 +216,15 @@
     Right d  -> toYAML d
     Left int -> toYAML int
   toYAML (J.Array a) = toYAML (V.toList a)
-  toYAML (J.Object o) = toYAML (Map.fromList (HM.toList o))
+  toYAML (J.Object o) = toYAML (Map.fromList (fromObject o))
+   where
+#if MIN_VERSION_aeson(2,0,0)
+    fromObject = fmap (\(k, v) -> (AK.toText k, v)) . AKM.toList
+#else
+    fromObject = HM.toList
+#endif
+
+
 
 -- | Serialize JSON Value using the YAML 1.2 Core schema to a lazy 'BS.L.ByteString'.
 --
