diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,17 @@
+## 0.3.11
+
+* [Generalize `print`](https://github.com/snoyberg/basic-prelude/pull/51)
+
+## 0.3
+
+* Moved a number of exports from @BasicPrelude@ to @CorePrelude@ and vice-versa.
+
+## 0.2
+
+* Renamed `BasicPrelude` to `CorePrelude` and added a new @BasicPrelude@ module
+provided a full-featured `Prelude` alternative. Also added a number of new
+exports.
+
+## 0.1
+
+* Initial version, code taken from @classy-prelude@ with a few minor tweaks.
diff --git a/CorePrelude.hs b/CorePrelude.hs
--- a/CorePrelude.hs
+++ b/CorePrelude.hs
@@ -22,6 +22,7 @@
     , Prelude.error
     , putStr
     , putStrLn
+    , print
     , getArgs
     , Prelude.odd
     , Prelude.even
@@ -166,8 +167,6 @@
       -- ** Hashing
     , hash
     , hashWithSalt
-      -- ** Print
-    , Prelude.print
       -- ** Command line args
     , readArgs
     ) where
@@ -258,6 +257,9 @@
 
 putStrLn :: MonadIO m => Text -> m ()
 putStrLn = liftIO . Data.Text.IO.putStrLn
+
+print :: (MonadIO m, Prelude.Show a) => a -> m ()
+print = liftIO . Prelude.print
 
 readArgs :: (MonadIO m, ReadArgs.ArgumentTuple a) => m a
 readArgs = liftIO ReadArgs.readArgs
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+basic-prelude
+=============
+
+The premise of `basic-prelude` is that there are a lot of very commonly desired
+features missing from the standard `Prelude`, such as commonly used operators
+(`\<$\>` and `>=>`, for instance) and imports for common datatypes (e.g.,
+`ByteString` and `Vector`). At the same time, there are lots of other
+components which are more debatable, such as providing polymorphic versions of
+common functions.
+
+So `basic-prelude` is intended to give a common foundation for a number of
+alternate preludes. The package provides two modules: `CorePrelude` provides
+the common ground for other preludes to build on top of, while `BasicPrelude`
+exports `CorePrelude` together with commonly used list functions to provide a
+drop-in replacement for the standard `Prelude`.
+
+Users wishing to have an improved `Prelude` can use `BasicPrelude`. Developers
+wishing to create a new prelude should use `CorePrelude`.
diff --git a/basic-prelude.cabal b/basic-prelude.cabal
--- a/basic-prelude.cabal
+++ b/basic-prelude.cabal
@@ -1,5 +1,5 @@
 name:                basic-prelude
-version:             0.3.10
+version:             0.3.11
 synopsis:            An enhanced core prelude; a common foundation for alternate preludes.
 description:
     The premise of @basic-prelude@ is that there are a lot of very commonly desired features missing from the standard @Prelude@, such as commonly used operators (@\<$\>@ and @>=>@, for instance) and imports for common datatypes (e.g., @ByteString@ and @Vector@). At the same time, there are lots of other components which are more debatable, such as providing polymorphic versions of common functions.
@@ -7,20 +7,13 @@
     So @basic-prelude@ is intended to give a common foundation for a number of alternate preludes. The package provides two modules: @CorePrelude@ provides the common ground for other preludes to build on top of, while @BasicPrelude@ exports @CorePrelude@ together with commonly used list functions to provide a drop-in replacement for the standard @Prelude@.
     .
     Users wishing to have an improved @Prelude@ can use @BasicPrelude@. Developers wishing to create a new prelude should use @CorePrelude@.
-    .
-    Release history:
-    .
-    [0.3] Moved a number of exports from @BasicPrelude@ to @CorePrelude@ and vice-versa.
-    .
-    [0.2] Renamed @BasicPrelude@ to @CorePrelude@ and added a new @BasicPrelude@ module provided a full-featured @Prelude@ alternative. Also added a number of new exports.
-    .
-    [0.1] Initial version, code taken from @classy-prelude@ with a few minor tweaks.
 
 homepage:            https://github.com/snoyberg/basic-prelude
 license:             MIT
 license-file:        LICENSE
 author:              Michael Snoyman, Dan Burton
 maintainer:          michael@snoyman.com
+extra-source-files:  README.md ChangeLog.md
 
 category:            Control, Prelude
 build-type:          Simple
