diff --git a/Mac/Relnotes b/Mac/Relnotes
index bb4d711..c83e9dc 100644
--- a/Mac/Relnotes
+++ b/Mac/Relnotes
@@ -1,133 +1,13 @@
-	Release notes for MacPython 1.5.1
-	---------------------------------
-	
-Open Issues and bugs:
+Changes since 1.6a1
+-------------------
 
-- Packages ("dotted import") appears to have problems for the cfm68k
-  version of MacPython. Please report anything of interest you find as
-  soon as possible, preferrably to pythonmac-sig@python.org. I no longer
-  have access to a reasonable 68K machine, so it may well be that this
-  means the demise of cfm68k Python is near.
-- Printing a NumPy "array([1.2])" may cause a crash in
-  cfm68k-Python. Same comments as above.
+- All core-Python changes, plus a few from after 1.6a2, approximately as the
+  Python CVS tree was at May 5.
+- The threading performance bug has been fixed.
+- Tkinter is included again (yeah!), but only lightly tested. Please report
+  findings to the mailing list.
+- macfsn.py is auto-imported on startup (unless disabled with a new option).
+  This retrofits macfs.StandardGetFile() and friends to use Navigation Services
+  in stead of the old Standard File dialogs.
+- I think all installer problems have been fixed. Please report if not so.
 
-Changes since the previous version:
-
-Here are the mac-specific changes since MacPython 1.4, with
-end-user-visible changes near the top and API changes and other things
-that are developer-only more to the bottom. Changes marked with a [*]
-are new changes since 1.5b3 (there has never been a MacPython 1.5
-final). And, of course, all Guido's 1.5.1 changes are
-incorporated.
-
-- Imported modules are now case-checked: the case of the filename
-  should match the name under which you import it [*]
-- There is now some minimal documentation on building true standalone
-  applications in Python, see building.html [*]
-- Python's private resources now use numbers from 228 up, because of
-  conflicts with Tk. This may affect you if you include private
-  resources in applets. [*]
-- Audio_mac spike bug fixed. [*]
-- FrameWork menu cleanup fixed. [*]
-- More MacOS errors now have a (somewhat) symbolic description. [*]
-- mactty module added to allow basic access to a serial line. [*]
-- toolbox modules have been regenerated, occasionally giving access to 
-  new functionality. They are now based upon Universal Headers version 
-  3.1 [*]
-- Waste module now uses Waste 1.3 [*]
-- Waste module now exports WE{Get,Set}TabSize [*]
-- Ordinal support in aetypes added (by Bill Bedford) [*]
-- ColorPicker module added (by Just van Rossum). It isn't documented,
-  but the docstring should be good enough. [*]
-- Printing module added (by Just van Rossum). It isn't documented and
-  it isn't easy to understand, but with Inside Mac beside you it might 
-  be useable. There's a test script in Mac:Lib:test. [*]
-- Sndihooks module added to give access to sound-input. Only lightly
-  tested and not documented yet. [*]
-- fstat() added to mac module. [*]
-- double dispose in MacOS.splash() fixed. [*]
-- Qt module now supports getting/setting movie times [*]
-- BuildApplet now also accepts old applets as input, which are updated 
-  to the current Python version [*]
-- Moved Mac:Lib:toolbox and scripting to lib-toolbox and
-  lib-scripting, analogous to Guido's changes. Initial sys.path settings
-  reflect this change
-- Added cPickle and cStringIO modules
-- Balloon help in set-preferences dialog and EditPythonPrefs
-- An interface to the Help Maganer has been added
-- New modules "preferences" and "pythonprefs" which allow access to
-  Python preferences and implements a general preference-handling
-  framework. New EditPythonPrefs uses this.
-- Applescript suite modules are now in a separate Mac:Lib:scripting
-  folder
-- Most modules now export their type objects
-- MacOS.SysBeep() and MacOS.GetTicks() added
-- sys.prefix and sys.exec_prefix are now set correctly
-- Installation is now through an installer 
-- mkapplet and MkPluginAliases have been renamed to BuildApplet and
-  ConfigurePython 
-- Applescript classes and properties are now exported by suites. Very
-  sketchy documentation added to applescript.html 
-- Tkinter now uses tcl/tk 8.0 
-- imports should be faster due to caching path information 
-- Generated suites now live in Mac:Lib:scripting 
-- Added zlib module 
-- Tkinter setfilehandler() did not work for sockets, fixed 
-- "Delay console window" option didn't work, fixed. Also check out the
-  quietconsole.py module 
-- Menu bar is restored (if needed) when keeping console open after
-  exit 
-- Influencing command-. and event processing (formerly MacOS.SetYield
-  and MacOS.SetScheduleTimes) has been changed, see the manual 
-- FrameWork (or your own windowing code) can use asynchronous
-  callbacks to keep user interface responsive during long computations 
-- Module to interface to Internet Config added
-- Module calldll added that allows calling of arbitrary C routines
-  from MacOS toolboxes
-- gdbm module added
-- ctb error handling fixed, and some memory leaks plugged
-- Various of the documentation files in Mac:Demo have been updated
-- MacOS.string_id_to_buffer is a new hack: the number you have to
-  add to the id() of a string object to get the (data) memory address
-- MacOS.splash() double-free fixed
-- macfs.FSSpec.as_pathname() was incorrect for disk toplevel folders
-- QT.NewMovieFromFile has an extra parameter and an extra return value
-- EasyDialogs.ProgressBar has changed both in layout and interface
-- FrameWork.Application has a new cleanup() method which asks all windows
-  to close themselves.
-- Loading of PYC resources from the application greatly speeded up,
-  especially for CDROM based applications
-- interrupt check/eventloop only entered 10 times per second, giving
-  big speedup
-- Allow any object (file, folder, disk) to be dropped on an applet
-- Twit resource number conflict with debuggee fixed
-- sys.path preference can now be longer than 255 chars
-- cfmfile module allows parsing and merging of CFRG resources
-- PythonFAT and PythonApplet are now fat (PPC/CFM68K) applications, so
-  applets can be moved between architectures.
-- Twit resource number conflict with debuggee fixed
-- mkapplet now uses a progress bar in stead of print statements
-- unshar made a bit more mac-friendly (input output dialogs)
-- img: added png, xbm, bmp support
-- img: jpeg now uses IJG v6 library
-- img: import of imagefile support modules delayed until needed
-- img: better error handling for truncated images and such
-- img: imgop.unpack() can unpack formats with multiple pixels per byte
-
-- build numbers work and are maintained in macbuildno.h by fullbuild.py
-- We now use CW Pro 1, with multitarget projects and such goodies 
-- fixed xx plugin project for cfm68k 
-- All files updated to new Py_ naming convention
-- Toolbox modules regenerated from new Universal Headers
-- nfullpath() merged into PyMac_GetFullPath()
-- Added support for Metrowerks profiler
-- Standard MW/MSL runtime libraries used in stead of homegrown version
-- Allow any object (file, folder, disk) to be dropped on an applet
-- Malloc now returns cache-line-aligned memory on PPC, which speeds
-  things up, especially on a 604. Dictionaries put this to good use.
-- statically linked pythons won't inadvertantly load .slb modules
-- Removed dependencies on PLStringFuncs and/or StdCLib
-- Project "segment" structure changed to more-or-less follow folder
-  structure
-- fullbuild redesigned
-- Added PyMac_Initialize() call, for use by embedding programs.
