diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,9 @@
+# Changelog for generic-override-aeson
+
+## 0.0.0.1
+
+* Bumping dependency bounds to support aeson 1.5
+
+## 0.0.0.0
+
+* Initial release
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,75 @@
+# generic-override
+
+[![Hackage](https://img.shields.io/hackage/v/generic-override.svg?logo=haskell&color=blueviolet)](https://hackage.haskell.org/package/generic-override)
+[![Build](https://img.shields.io/travis/estatico/generic-override.svg?logo=travis)](http://travis-ci.org/estatico/generic-override)
+
+For the associated blog post describing how this works, see
+[Overriding Type Class Instances](http://caryrobbins.com/dev/overriding-type-class-instances-2/).
+
+-------------------------
+
+This repo contains the following libraries -
+* [generic-override](https://hackage.haskell.org/package/generic-override)
+* [generic-override-aeson](https://hackage.haskell.org/package/generic-override-aeson)
+
+-------------------------
+
+This library provides the ability to override instances used by generic derivation.
+
+## Example
+
+```haskell
+-- Needed for constructing our 'Override' type in the DerivingVia clause.
+import Data.Override (Override(Override), As)
+-- Provides aeson support for generic-override (lives in generic-override-aeson).
+import Data.Override.Aeson ()
+-- Basic imports we need for the example.
+import Data.Aeson (ToJSON(toJSON))
+import Data.Text (Text)
+import qualified Data.Text as Text
+
+-- | A simple record type. We'll use generic derivation for the 'ToJSON' instance
+-- but override the instances used by derivation for the 'String' and 'baz'
+-- fields.
+data MyRec = MyRec
+  { foo :: Int
+  , bar :: String
+  , baz :: Text
+  } deriving stock (Show, Eq, Generic)
+    deriving (ToJSON)
+      via Override MyRec
+            '[ -- Derive the 'String' field via 'CharArray'.
+               String `As` CharArray
+               -- Derive the 'baz' field via 'Uptext'.
+             , "baz" `As` Uptext
+             ]
+
+-- | Newtype wrapper to override 'ToJSON Text' instances with ones that
+-- encode the 'Text' as uppercase.
+newtype Uptext = Uptext { unUptext :: Text }
+
+instance ToJSON Uptext where
+  toJSON = toJSON . Text.toUpper . unUptext
+
+-- | Newtype wrapper to override 'ToJSON String' instances with ones that
+-- encode the 'String' as a JSON array of characters.
+newtype CharArray = CharArray { unCharArray :: String }
+
+instance ToJSON CharArray where
+  toJSON = toJSON . map (:[]) . unCharArray
+```
+
+Let's serialize an example `MyRec` to JSON -
+
+```haskell
+% ghci
+> :{
+  Data.ByteString.Lazy.Char8.putStrLn
+    $ Data.Aeson.encode
+    $ Data.Aeson.toJSON MyRec { foo = 12, bar = "hi", baz = "bye" }
+  :}
+{"foo":12,"bar":["h","i"],"baz":"BYE"}
+```
+
+For more examples, see the test suite in
+[generic-override-aeson](https://github.com/estatico/generic-override/blob/master/generic-override-aeson/test/Test.hs).
diff --git a/generic-override-aeson.cabal b/generic-override-aeson.cabal
--- a/generic-override-aeson.cabal
+++ b/generic-override-aeson.cabal
@@ -1,48 +1,53 @@
-cabal-version: 1.12
-name: generic-override-aeson
-version: 0.0.0.0
-license: BSD3
-license-file: LICENSE
-copyright: 2020 Estatico Studios LLC
-maintainer: carymrobbins@gmail.com
-author: Cary Robbins
-homepage: https://github.com/estatico/generic-override#readme
-bug-reports: https://github.com/estatico/generic-override/issues
-synopsis: Provides orphan instances necessary for integrating generic-override and aeson
+cabal-version:      1.12
+name:               generic-override-aeson
+version:            0.0.0.2
+license:            BSD3
+license-file:       LICENSE
+copyright:          2020 Estatico Studios LLC
+maintainer:         carymrobbins@gmail.com
+author:             Cary Robbins
+homepage:           https://github.com/estatico/generic-override#readme
+bug-reports:        https://github.com/estatico/generic-override/issues
+synopsis:
+    Provides orphan instances necessary for integrating generic-override and aeson
+
 description:
     Please see the README on GitHub at <https://github.com/estatico/generic-override#readme>
-category: Generics
-build-type: Simple
 
+category:           Generics
+build-type:         Simple
+extra-source-files:
+    README.md
+    CHANGELOG.md
+
 source-repository head
-    type: git
+    type:     git
     location: https://github.com/estatico/generic-override
 
 library
-    exposed-modules:
-        Data.Override.Aeson
-    hs-source-dirs: src
-    other-modules:
-        Paths_generic_override_aeson
+    exposed-modules:  Data.Override.Aeson
+    hs-source-dirs:   src
+    other-modules:    Paths_generic_override_aeson
     default-language: Haskell2010
     build-depends:
-        aeson >=1.4.5.0 && <1.5,
+        aeson >=1.4 && <1.6,
         base >=4.7 && <5,
-        generic-override >=0.0.0.0 && <0.1
+        generic-override >=0.2.0.0 && <0.3
 
 test-suite generic-override-aeson-test
-    type: exitcode-stdio-1.0
-    main-is: Test.hs
-    hs-source-dirs: test
+    type:             exitcode-stdio-1.0
+    main-is:          Test.hs
+    hs-source-dirs:   test
     other-modules:
         LispCaseAeson
         Paths_generic_override_aeson
+
     default-language: Haskell2010
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N
+    ghc-options:      -threaded -rtsopts -with-rtsopts=-N
     build-depends:
-        aeson >=1.4.5.0 && <1.5,
+        aeson >=1.4 && <1.6,
         base >=4.7 && <5,
-        generic-override >=0.0.0.0 && <0.1,
+        generic-override >=0.2.0.0 && <0.3,
         generic-override-aeson -any,
         hspec >=2.7.1 && <2.8,
         text >=1.2.3.1 && <1.3
diff --git a/src/Data/Override/Aeson.hs b/src/Data/Override/Aeson.hs
--- a/src/Data/Override/Aeson.hs
+++ b/src/Data/Override/Aeson.hs
@@ -15,7 +15,7 @@
 module Data.Override.Aeson where
 
 import Data.Coerce (Coercible, coerce)
-import Data.Override (Override, Overridden(Overridden), Using)
+import Data.Override.Internal (Override, Overridden(Overridden), Using)
 import GHC.Generics (Generic, Rep)
 import qualified Data.Aeson as Aeson
 
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -15,7 +15,7 @@
 
 import Data.Aeson (FromJSON(parseJSON), ToJSON(toJSON), Result(Success), fromJSON)
 import Data.Aeson.QQ.Simple (aesonQQ)
-import Data.Override (Override(Override), As)
+import Data.Override (Override(Override), As, With)
 import Data.Override.Aeson ()
 import Data.Text (Text)
 import GHC.Generics (Generic)
@@ -33,6 +33,7 @@
     it "Rec4" testRec4
     it "Rec5" testRec5
     it "Rec6" testRec6
+    it "Rec7" testRec6
 
 newtype Uptext = Uptext { unUptext :: Text }
 
@@ -198,6 +199,31 @@
 testRec6 :: IO ()
 testRec6 = do
   let r = Rec6 { foo = 1, bar = "hi", baz = "bye" }
+  let j = [aesonQQ|
+    {
+      "foo": "1",
+      "bar": ["h", "i"],
+      "baz": "bye"
+    }
+  |]
+  toJSON r `shouldBe` j
+  fromJSON j `shouldBe` Success r
+
+-- Test 'Override' for both 'ToJSON' and 'FromJSON'.
+data Rec7 = Rec7
+  { foo :: Int
+  , bar :: String
+  , baz :: Text
+  } deriving stock (Show, Eq, Generic)
+    deriving (ToJSON, FromJSON)
+      via Override Rec7
+            '[ "foo" `With` Shown
+             , String `With` CharArray
+             ]
+
+testRec7 :: IO ()
+testRec7 = do
+  let r = Rec7 { foo = 1, bar = "hi", baz = "bye" }
   let j = [aesonQQ|
     {
       "foo": "1",
