diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,6 +1,10 @@
-# Changelog for typed-uuid
+# Changelog
 
-## Unreleased changes
+## [0.2.0.0] - 2021-11-20
+
+### Changed
+
+* Replaced `yamlparse-applicative` by `autodocodec`.
 
 ## [0.1.0.0] - 2020-05-10
 
diff --git a/src/Data/UUID/Typed.hs b/src/Data/UUID/Typed.hs
--- a/src/Data/UUID/Typed.hs
+++ b/src/Data/UUID/Typed.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingVia #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings #-}
 
@@ -14,9 +15,12 @@
     parseUUIDString,
     parseUUIDAsciiBytes,
     parseUUIDLazyAsciiBytes,
+    jsonParseUUID,
+    textJSONParseUUID,
   )
 where
 
+import Autodocodec
 import Control.DeepSeq
 import Control.Monad.IO.Class
 import Data.Aeson as JSON
@@ -26,7 +30,6 @@
 import qualified Data.ByteString.Lazy as LB
 import Data.Data
 import Data.Hashable
-import qualified Data.Text as T
 import Data.Text (Text)
 import qualified Data.UUID as UUID
 import qualified Data.UUID.V4 as UUID
@@ -35,15 +38,15 @@
 import Foreign.Storable
 import GHC.Generics
 import System.Random
-import Text.Read
 import Web.HttpApiData
-import YamlParse.Applicative (YamlKeySchema (..), YamlSchema (..), extraParser, viaYamlSchema)
 
 newtype UUID a
   = UUID
       { unUUID :: UUID.UUID
       }
-  deriving (Eq, Ord, Generic, Data, Storable, Binary, NFData, Hashable, Random, Show, Read, Validity)
+  deriving stock (Eq, Ord, Generic, Show, Read, Data)
+  deriving newtype (Storable, Binary, NFData, Hashable, Random, Validity)
+  deriving (FromJSON, ToJSON) via (Autodocodec (UUID a))
 
 -- | See 'UUID.toText'
 uuidText :: UUID a -> Text
@@ -87,26 +90,22 @@
 instance ToJSONKey (UUID a) where
   toJSONKey = toJSONKeyText (UUID.toText . unUUID)
 
-instance FromJSON (UUID a) where
-  parseJSON = viaYamlSchema
-
-instance YamlSchema (UUID a) where
-  yamlSchema = extraParser textJSONParseUUID yamlSchema
-
-instance YamlKeySchema (UUID a) where
-  yamlKeySchema = extraParser textJSONParseUUID yamlKeySchema
-
 jsonParseUUID :: Value -> Parser (UUID a)
 jsonParseUUID = withText "UUID" textJSONParseUUID
 
+instance HasCodec (UUID a) where
+  codec = bimapCodec f uuidText codec
+    where
+      f t =
+        case UUID.fromText t of
+          Nothing -> Left "Invalid Text when parsing UUID"
+          Just u -> Right $ UUID u
+
 textJSONParseUUID :: Text -> Parser (UUID a)
 textJSONParseUUID t =
   case UUID.fromText t of
     Nothing -> fail "Invalid Text when parsing UUID"
     Just u -> pure $ UUID u
-
-instance ToJSON (UUID a) where
-  toJSON (UUID u) = JSON.String $ UUID.toText u
 
 instance FromHttpApiData (UUID a) where
   parseUrlPiece t =
diff --git a/typed-uuid.cabal b/typed-uuid.cabal
--- a/typed-uuid.cabal
+++ b/typed-uuid.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: 3beab03fce46280926d3d2293c040ade8b4b61d482353da4ed41730cda4b0cc2
+-- hash: 1235b07162ca1fe1139a223b3863aaf2c7fc25e74589485f95b5191f2baca3b4
 
 name:           typed-uuid
-version:        0.1.0.0
+version:        0.2.0.0
 synopsis:       Phantom-Typed version of UUID
 description:    Please see the README on Github at <https://github.com/NorfairKing/typed-uuid#readme>
 category:       Data
@@ -36,6 +36,7 @@
       src
   build-depends:
       aeson
+    , autodocodec
     , base >=4.11 && <5
     , binary
     , bytestring
@@ -44,8 +45,7 @@
     , http-api-data
     , random
     , text
-    , uuid >=1.3 && <1.4
+    , uuid ==1.3.*
     , validity
     , validity-uuid >=0.0
-    , yamlparse-applicative
   default-language: Haskell2010
