diff --git a/README b/README
index 895b84e..2b097b7 100644
--- a/README
+++ b/README
@@ -1,109 +1,19 @@
-This is Python release 1.5
-==========================
+This is Python release 1.5.1
+============================
 
-This version is officially released on Wednesday, December 31, 1997.
-It doesn't differ very much from 1.5b2 (released on Dec. 12).
+This version is officially released on Tuesday, April 14, 1997.  It is
+mostly a bugfix release on Python 1.5.
 
 
 What's new in this release?
 ---------------------------
 
-There's a loooong list of changes since release 1.4 in the file
-Misc/NEWS.  Some highlights:
+See the Misc/NEWS file.  Nothing spectacular this time, only small
+changes (as you would expect from a release called "1.5.1").
 
-  - It's much faster (almost twice for the Lib/test/pystone.py
-  benchmark.)
-
-  - There is now an assert statement: ``assert <condition>'' or
-  ``assert <condition>, <errormessage>''.  It raises AssertionError if
-  the condition evaluates to false.  The default error message is
-  empty; the source text of the assertion statement is printed as part
-  of the traceback.
-
-  - There is now built-in support for importing hierarchical module
-  names (e.g. "import spam.ham.eggs"); ni is declared obsolete.  Note
-  that the built-in package support is somewhat simpler (no __ and
-  __domain__) and differs in one crucial aspect: __init__.py is
-  required, and loaded in the package's namespace instead of as a
-  submodule.  For more information, see
-    http://www.python.org/doc/essays/packages.html.
-
-  - The new "re" module (Perl style regular expressions) is here.  It
-  is based on Philip Hazel's pcre code; the Python interfaces were put
-  together by Andrew Kuchling, Tim Peters and Jeffrey Ollie.  The
-  regex module is declared obsolete.
-
-  - In support of the re module, a new form of string literals is
-  introduced, "raw strings": e.g. r"\n" is equal to "\\n".
-
-  - All standard exceptions and most exceptions defined in standard
-  extension modules are now classes.  Use python -X to revert back to
-  string exceptions.  See
-    http://www.python.org/doc/essays/stdexceptions.html
-  for more info.
-
-  - Comparisons can now raise exceptions (previously, exceptions
-  occuring during comparisons were swept under the rug).
-
-  - New dictionary methods: .clear(), .copy(), .update(), .get().  The
-  first two are obvious; d1.update(d2) is equivalent to the for loop
-  ``for k in d2.keys(): d1[k] = d2[k]''; and d.get(k) returns d[k] if
-  it exists and None (or the optional second argument) if not.
-
-  - There is a new regression test harness, which tests many more
-  modules.  (To run the tests, do "import test.autotest".)
-
-  - The interpreter is much smarter about the initial value for
-  sys.path; you can control it easier using $PYTHONHOME (see the usage
-  message, e.g. try ``python -h'').  In most situations, the
-  interpreter can be installed at an arbitrary location without having
-  to recompile.
-
-  - The build process now builds a single library (libpython1.5.a)
-  which contains everything except for the main() entry point.  This
-  makes life much easier for applications that embed Python.
-
-  - There is much better support for embedding, including threads,
-  multiple interpreters(!), uninitialization, and access to the global
-  interpreter lock.
-
-  - There is a -O option that removes SET_LINENO instructions, assert
-  statements and code prefixed with ``if __debug__: ...''.  (It still
-  only makes a few percent difference, so don't get all worked up
-  about this.)
-
-  - The Grand Renaming is completed: all linker-visible symbols
-  defined by Python now have a "Py" or "_Py" prefix, and the same is
-  true for most macros and typedefs.
-
-If you previously downloaded 1.5b2, here are the most relevant changes
-since then (of course all known bugs have been fixed, leaks plugged,
-and quite a bit of documentation has been added -- including doc
-strings here and there).  The full list of changes since 1.5b2 is
-presented at the end of the Misc/NEWS file.
-
-  - Thanks to all who contributed doc strings or other documentation!
-
-  - Many small improvements to the quality of the documentation, both
-  PostScript, HTML and even Emacs info (library manual only).
-
-  - New module telnetlib.py.
-
-  - New tool versioncheck.
-
-  - Two bugs with ftp URLs fixed in urllib.py.
-
-  - Fixed infinite recursion when printing __builtins__.
-
-  - A bunch of small problems fixed in Tkinter.py.
-
-  - Ported zlibmodule.c and bsddbmodule.c to NT.
-
-  - Better NT support in tempfile.py.
-
-  - Fixed 4294967296==0.
-
-  - Latest re and pcre modules (versions of Dec. 22).
+One big organizational change: the documentation sources have been
+unbundled.  We will release a version of the Doc subtree separately,
+but probably not simultaneously with the source release.
 
 
 If you don't read instructions
