diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+__v0.10.3.0
+ghc9.0, aeson 2.0
+
 __v0.10.2.0
 
 update time dependency
diff --git a/pinboard.cabal b/pinboard.cabal
--- a/pinboard.cabal
+++ b/pinboard.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: eaf046ffeb948c5457f43992f4074cd5931d51098aed3ec2cac26197374b3ff1
+-- hash: cfb12dfa6ca61ff5add72cb940500a794f411ce22776a260ad2d51b29ec5ed81
 
 name:           pinboard
-version:        0.10.2.0
+version:        0.10.3.0
 synopsis:       Access to the Pinboard API
 description:    .
                 The Pinboard API is a way to interact programatically with
@@ -36,14 +36,14 @@
       src
   ghc-options: -Wall -fwarn-incomplete-patterns -funbox-strict-fields -fexpose-all-unfoldings
   build-depends:
-      aeson >=0.11.1 && <2.0
+      aeson >=2.0 && <3.0
     , base >=4.6 && <5.0
     , bytestring >=0.10.0 && <0.11
     , containers >=0.5.0.0 && <0.7
-    , http-client >=0.5 && <0.7
+    , http-client >=0.5 && <0.8
     , http-client-tls >=0.3.0 && <0.4
     , http-types >=0.8 && <0.13
-    , monad-logger >=0.3 && <0.4
+    , monad-logger ==0.3.*
     , mtl >=2.2.1
     , network >=2.6.2 && <4
     , profunctors >=5
diff --git a/src/Pinboard/ApiTypes.hs b/src/Pinboard/ApiTypes.hs
--- a/src/Pinboard/ApiTypes.hs
+++ b/src/Pinboard/ApiTypes.hs
@@ -16,7 +16,9 @@
 
 import Data.Aeson
 import Data.Aeson.Types (Parser)
-import Data.HashMap.Strict (HashMap, member, toList)
+import qualified Data.Aeson.KeyMap as A
+import qualified Data.Aeson.Key as A
+import Data.HashMap.Strict (HashMap)
 import Data.Data (Data, Typeable)
 import Data.Text (Text, words, unwords, unpack, pack)
 import Data.Time (UTCTime, parseTimeM)
@@ -107,8 +109,8 @@
     where
       parseDates :: Value -> [DateCount]
       parseDates (Object o') = do
-        (dateStr, String countStr) <- toList o'
-        return (read (unpack dateStr), read (unpack countStr))
+        (dateStr, String countStr) <- A.toList o'
+        return (read (A.toString dateStr), read (unpack countStr))
       parseDates _ = []
   parseJSON _ = fail "bad parse"
 
@@ -121,7 +123,7 @@
       ]
     where
       dateCountToPair (day, count) =
-        ((pack . show) day, String $ (pack . show) count)
+        ((A.fromString . show) day, String $ (pack . show) count)
 
 type DateCount = (Day, Int)
 
@@ -216,7 +218,7 @@
   parseJSON = toTags
     where
       toTags (Object o) =
-        return . ToJsonTagMap $ HM.map (\(String s) -> read (unpack s)) o
+        return . ToJsonTagMap $ HM.map (\(String s) -> read (unpack s)) $ A.toHashMapText o
       toTags _ = fail "bad parse"
 
 instance ToJSON JsonTagMap where
@@ -229,8 +231,8 @@
 
 instance FromJSON Suggested where
   parseJSON (Object o)
-    | member "popular" o = Popular <$> (o .: "popular")
-    | member "recommended" o = Recommended <$> (o .: "recommended")
+    | A.member "popular" o = Popular <$> (o .: "popular")
+    | A.member "recommended" o = Recommended <$> (o .: "recommended")
     | otherwise = fail "bad parse"
   parseJSON _ = fail "bad parse"
 
diff --git a/src/Pinboard/ApiTypesLens.hs b/src/Pinboard/ApiTypesLens.hs
--- a/src/Pinboard/ApiTypesLens.hs
+++ b/src/Pinboard/ApiTypesLens.hs
@@ -8,6 +8,7 @@
 import Data.Text (Text)
 import Data.Time (UTCTime)
 import Data.Time.Calendar (Day)
+import Data.Kind (Type)
 
 import Control.Applicative
 import Data.Profunctor
@@ -17,15 +18,17 @@
 -- * Lens Aliases
 type Lens_' s a = Lens_ s s a a
 
-type Lens_ s t a b = forall (f :: * -> *). Functor f =>
-                                           (a -> f b) -> s -> f t
+type Lens_ s t a b
+   = forall (f :: Type -> Type). Functor f =>
+                                   (a -> f b) -> s -> f t
 
 type Prism_' s a = Prism_ s s a a
 
-type Prism_ s t a b = forall (p :: * -> * -> *) (f :: * -> *). (Choice p
-                                                               ,Applicative f) =>
+type Prism_ s t a b
+   = forall (p :: Type -> Type -> Type) (f :: Type -> Type). ( Choice p
+                                                             , Applicative f
+                                                             ) =>
                                                                p a (f b) -> p s (f t)
-
 -- * Posts
 postsDateL :: Lens_' Posts UTCTime
 postsDateL f_acx6 (Posts x1_acx7 x2_acx8 x3_acx9) =
