diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,14 @@
+## Changelog for the `vault` package
+
+**0.3.0.4** — Bump upper version bound for the `base` dependency.
+
+**0.3.0.3** — Bump upper version bound for the `base` dependency.
+
+**0.3.0.2** — Fix tarball.
+
+**0.3.0.1** — Use CPP to reduce code duplication.
+
+**0.3.0.0**
+
+* Split modules into Lazy and Strict variants, no default choice.
+* Add Hashable instance to `Data.Unique.Really` for all implementations.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,47 @@
+[![Build Status](https://travis-ci.org/HeinrichApfelmus/vault.png)](https://travis-ci.org/HeinrichApfelmus/vault)
+
+
+*Vault* is a tiny library that provides a single data structure called *vault*.
+
+A *vault* is a type-safe, persistent storage for values of arbitrary types. Like `IORef`, I want to be able to store values of any type in it, but unlike `IORef`, I want the storage space to behave like a persistent, first-class data structure, as appropriate for a purely functional language.
+
+It is analogous to a bank vault, where you can access different bank boxes with different keys; hence the name.
+
+In other words, a vault is an abstract data type with the following basic signature
+
+    data Key a
+    data Vault
+
+    newKey :: IO (Key a)
+    empty  :: Vault
+    lookup :: Key a -> Vault -> Maybe a
+    insert :: Key a -> a -> Vault -> Vault
+    delete :: Key a -> Vault -> Vault
+
+A few common functions for finite maps, like `adjust` and `union`, are provided as well.
+
+
+This library was created thanks to the feedback on my blog post [Vault - a persistent store for values of arbitrary types][1].
+
+  [1]: http://apfelmus.nfshost.com/blog/2011/09/04-vault.html
+
+
+Installation
+============
+The whole thing is [available on hackage][hackage], so you just have to type
+
+    cabal update
+    cabal install vault
+
+  [hackage]: http://hackage.haskell.org/package/vault
+
+Feedback
+========
+Use the [issue tracker][2] or send an [email to the maintainer][3].
+
+  [2]: https://github.com/HeinrichApfelmus/vault/issues
+  [3]: mailto:apfelmus@quantentunnel.de
+
+
+
+
diff --git a/Readme.md b/Readme.md
deleted file mode 100644
--- a/Readme.md
+++ /dev/null
@@ -1,47 +0,0 @@
-[![Build Status](https://travis-ci.org/HeinrichApfelmus/vault.png)](https://travis-ci.org/HeinrichApfelmus/vault)
-
-
-*Vault* is a tiny library that provides a single data structure called *vault*.
-
-A *vault* is a type-safe, persistent storage for values of arbitrary types. Like `IORef`, I want to be able to store values of any type in it, but unlike `IORef`, I want the storage space to behave like a persistent, first-class data structure, as appropriate for a purely functional language.
-
-It is analogous to a bank vault, where you can access different bank boxes with different keys; hence the name.
-
-In other words, a vault is an abstract data type with the following basic signature
-
-    data Key a
-    data Vault
-
-    newKey :: IO (Key a)
-    empty  :: Vault
-    lookup :: Key a -> Vault -> Maybe a
-    insert :: Key a -> a -> Vault -> Vault
-    delete :: Key a -> Vault -> Vault
-
-A few common functions for finite maps, like `adjust` and `union`, are provided as well.
-
-
-This library was created thanks to the feedback on my blog post [Vault - a persistent store for values of arbitrary types][1].
-
-  [1]: http://apfelmus.nfshost.com/blog/2011/09/04-vault.html
-
-
-Installation
-============
-The whole thing is [available on hackage][hackage], so you just have to type
-
-    cabal update
-    cabal install vault
-
-  [hackage]: http://hackage.haskell.org/package/vault
-
-Feedback
-========
-Use the [issue tracker][2] or send an [email to the maintainer][3].
-
-  [2]: https://github.com/HeinrichApfelmus/vault/issues
-  [3]: mailto:apfelmus@quantentunnel.de
-
-
-
-
diff --git a/vault.cabal b/vault.cabal
--- a/vault.cabal
+++ b/vault.cabal
@@ -1,5 +1,5 @@
 Name:               vault
-Version:            0.3.0.3
+Version:            0.3.0.4
 Synopsis:           a persistent store for values of arbitrary types
 Description:
   A /vault/ is a persistent store for values of arbitrary types.
@@ -10,17 +10,6 @@
   hence the name.
   .
   Also provided is a /locker/ type, representing a store for a single element.
-  .
-  Changelog:
-  .
-  * 0.3.0.3 - Bump version of base.
-  .
-  * 0.3.0.2 - Fix tarball.
-  .
-  * 0.3.0.1 - Use CPP to reduce code duplication.
-  .
-  * 0.3.0.0 - Split modules into Lazy and Strict variants, no default choice.
-  Add Hashable instance to Data.Unique.Really for all implementations.
     
 Category:           Data
 License:            BSD3
@@ -34,7 +23,8 @@
 cabal-version:      >= 1.6
 
 extra-source-files:
-    Readme.md
+    CHANGELOG.md
+    README.md
     src/Data/Vault/IO.hs
     src/Data/Vault/ST/ST.hs
     src/Data/Vault/ST/backends/GHC.hs
@@ -49,7 +39,7 @@
 
 Library
     hs-source-dirs:     src
-    build-depends:      base >= 4.5 && < 4.8,
+    build-depends:      base >= 4.5 && < 4.9,
                         containers >= 0.4 && < 0.6,
                         unordered-containers >= 0.2.3.0 && < 0.3,
                         hashable >= 1.1.2.5 && < 1.3
