diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,37 @@
+# Change Log
+
+## [1.1.1] - 2021-10-31
+- add this changelog to `memoize.cabal`
+
+## [1.1.0] - 2021-10-31
+- add `Memoizable` instances for types from `base`:
+   - `Data.Complex.Complex`
+   - `Data.Ratio.Ratio`
+   - `Data.Tuple.Solo`
+   - `Data.Version.Version`
+   - `Data.Void.Void`
+- fix misspelling of “little-endian” in docs
+
+## [1.0.0] - 2021-10-27
+- support GHC 9
+
+## [0.8.0] - 2016-09-03
+- support GHC 8 and `template-haskell` 2.11.0
+
+## [0.7.0] - 2015-03-30
+- support GHC 7.10
+
+## [0.6.0] - 2014-04-01
+- support GHC 7.6
+
+## [0.4.0] - 2014-04-01
+- prevent use of `template-haskell` 3
+
+## [0.3.0] - 2012-03-12
+- support GHC 7.4
+
+## [0.2.0] - 2012-03-06
+- fix: arithmetic overflow in memoization on `Int`
+
+## [0.1.0] - 2011-07-11
+- initialize release
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,41 @@
+memoize
+=======
+
+[![Build Status][ci badge]][ci]
+[![Docs][haddock badge]][haddock]
+[![Hackage][hackage badge]][hackage]
+[![License: BSD 3-Clause][license badge]][license]
+
+This library provides a type class `Memoizable` for memoizing
+functions, along with instances for a variety of argument types.
+It includes a Template Haskell function for deriving
+`Memoizable` instances for arbitrary algebraic datatypes.
+
+The library constructs pure memo caches without the use of
+`unsafePerformIO`.  This technique relies on implementation
+assumptions—namely, *call-by-need*—that, while not guaranteed
+by the semantics of Haskell, generally appear to hold.
+
+[ci]:
+  <https://github.com/tov/memoize/actions/workflows/ci.yaml>
+  
+[ci badge]:
+  <https://github.com/tov/memoize/actions/workflows/ci.yaml/badge.svg>
+
+[hackage]:
+  <https://hackage.haskell.org/package/memoize>
+
+[hackage badge]:
+  <https://badgen.net/hackage/v/memoize>
+  
+[license]:
+  <https://hackage.haskell.org/package/memoize/src/LICENSE>
+  
+[license badge]:
+  <https://badgen.net/hackage/license/memoize>
+
+[haddock]:
+  <https://hackage.haskell.org/package/memoize/docs/Data-Function-Memoize.html>
+  
+[haddock badge]:
+  <https://img.shields.io/static/v1?label=docs&message=available&color=blue>
diff --git a/memoize.cabal b/memoize.cabal
--- a/memoize.cabal
+++ b/memoize.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.2
 name:           memoize
-version:        1.1.0
+version:        1.1.1
 license:        BSD-3-Clause
 license-file:   LICENSE
 stability:      experimental
@@ -22,6 +22,8 @@
         assumptions that, while not guaranteed by the semantics of
         Haskell, appear to be true.
 
+extra-source-files: README.md CHANGELOG.md
+
 library
   build-depends:        base >=3 && <5,
                         template-haskell >=2 && <3
@@ -36,25 +38,25 @@
     Data.Function.Memoize.Class
 
 test-suite memoize-test1
-    Default-Language: Haskell98
-    Hs-Source-Dirs: test
-    Type: exitcode-stdio-1.0
-    Main-is: test1.hs
+    default-language: Haskell98
+    hs-source-dirs: test
+    type: exitcode-stdio-1.0
+    main-is: test1.hs
     build-depends: base, memoize
 
 test-suite memoize-test2
-    Default-Language: Haskell98
-    Hs-Source-Dirs: test
-    Type: exitcode-stdio-1.0
-    Main-is: test2.hs
+    default-language: Haskell98
+    hs-source-dirs: test
+    type: exitcode-stdio-1.0
+    main-is: test2.hs
     build-depends: base, memoize
 
 test-suite memoize-test3
-    Default-Language: Haskell98
-    Hs-Source-Dirs: test
-    Other-Modules: Test3Helper
-    Type: exitcode-stdio-1.0
-    Main-is: test3.hs
+    default-language: Haskell98
+    hs-source-dirs: test
+    other-modules: Test3Helper
+    type: exitcode-stdio-1.0
+    main-is: test3.hs
     build-depends: base, memoize
 
 source-repository head
