diff --git a/Coco.hs b/Coco.hs
--- a/Coco.hs
+++ b/Coco.hs
@@ -6,7 +6,8 @@
 module Coco where
 import qualified Language.Haskell.TH as TH
 import Data.Void (Void)
-import Control.Monad (guard)
+import Control.Applicative (empty)
+import Control.Monad ((>=>), guard)
 import Data.Either.HT (maybeRight)
 import qualified Data.ByteString.Lazy as B
 import qualified Data.ByteString.Lazy.UTF8 as B
@@ -18,6 +19,7 @@
 import qualified Data.Text.Encoding as TS
 import Data.UUID (UUID)
 import qualified Data.UUID as UUID
+import qualified Data.Aeson as Aeson
 import qualified Coco.TH
 
 {-|
@@ -25,7 +27,7 @@
 
 * Both types must be monomorphic.
 
-* If two of @MaybeTo b a@, @MaybeTo c b@ and @MaybeTo c a@ are defined in your module, the third must be available (not necessarily defined) in your module.
+* If two of @MaybeTo b a@, @MaybeTo c b@ and @MaybeTo c a@ are defined in your module, the third must be available in (not necessarily defined in) your module.
 
 * For any @a@, @maybeTo a >>= maybeTo@ must be either @maybeTo a@ or @Nothing@.
 -}
@@ -118,3 +120,21 @@
 instance To BS.ByteString UUID where to = UUID.toASCIIBytes
 instance MaybeTo BS.ByteString UUID
 instance MaybeTo UUID BS.ByteString where maybeTo = UUID.fromASCIIBytes
+
+instance To Aeson.Value TS.Text where to = Aeson.String
+instance MaybeTo Aeson.Value TS.Text
+instance MaybeTo TS.Text Aeson.Value where
+	maybeTo (Aeson.String s) = pure s
+	maybeTo _ = empty
+instance To Aeson.Value T.Text where to = to . to @TS.Text
+instance MaybeTo Aeson.Value T.Text
+instance MaybeTo T.Text Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text
+instance MaybeTo Aeson.Value String where maybeTo = fmap to . maybeTo @TS.Text
+instance MaybeTo String Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text
+instance MaybeTo Aeson.Value B.ByteString where maybeTo = fmap to . maybeTo @TS.Text
+instance MaybeTo B.ByteString Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text
+instance MaybeTo Aeson.Value BS.ByteString where maybeTo = fmap to . maybeTo @TS.Text
+instance MaybeTo BS.ByteString Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text
+instance To Aeson.Value UUID where to = to . to @TS.Text
+instance MaybeTo Aeson.Value UUID
+instance MaybeTo UUID Aeson.Value where maybeTo = maybeTo @TS.Text >=> maybeTo
diff --git a/Coco/TH.hs b/Coco/TH.hs
--- a/Coco/TH.hs
+++ b/Coco/TH.hs
@@ -10,6 +10,7 @@
 import qualified Data.Text.Lazy as T
 import qualified Data.Text as TS
 import Data.UUID (UUID)
+import qualified Data.Aeson as Aeson
 
 instanceD :: (Functor t, Foldable1 t) => [TH.Dec] -> t TH.Name -> TH.Dec
 instanceD = flip
@@ -59,4 +60,4 @@
 	. fmap (: [''Void])
 
 nonVoid :: [TH.Name]
-nonVoid = [''B.ByteString, ''BS.ByteString, ''T.Text, ''TS.Text, ''String, ''UUID]
+nonVoid = [''B.ByteString, ''BS.ByteString, ''T.Text, ''TS.Text, ''String, ''UUID, ''Aeson.Value]
diff --git a/coco.cabal b/coco.cabal
--- a/coco.cabal
+++ b/coco.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.8
 name:               coco
-version:            0.0.0.0
+version:            0.0.1.0
 build-type:         Simple
 category:           Conversion
 author:             Konrad Czech
@@ -19,14 +19,16 @@
 library
  ghc-options: -Wall -Wno-tabs
  default-language: GHC2021
- default-extensions: OverloadedStrings, QuasiQuotes, TemplateHaskell, TypeFamilyDependencies, DerivingStrategies, UndecidableInstances, DataKinds, CPP, LambdaCase, DefaultSignatures
+ default-extensions: TemplateHaskell, DefaultSignatures
  build-depends:
-  base >= 4.18 && < 4.23,
-  template-haskell >= 2.20 && < 2.25,
+  base >= 4.17 && < 4.23,
+  template-haskell >= 2.19 && < 2.25,
   utility-ht >= 0.0.16 && < 0.1,
   bytestring >= 0.11.3 && < 0.13,
   utf8-string >= 1.0.1.1 && < 1.1,
   text >= 1.2.5.0 && < 2.2,
-  uuid >= 1.3.15 && < 1.4
+  uuid >= 1.3.15 && < 1.4,
+  aeson >= 2.1 && < 2.3,
+  foldable1-classes-compat >= 0.1 && < 0.2
  exposed-modules: Coco
  other-modules: Coco.TH
