diff --git a/Mac/ReadMeOrSuffer b/Mac/ReadMeOrSuffer
index 7339fbf..a9c2fb3 100644
--- a/Mac/ReadMeOrSuffer
+++ b/Mac/ReadMeOrSuffer
@@ -1,4 +1,4 @@
-How to install Python 1.3.3 on your Macintosh
+How to install Python 1.4 on your Macintosh
 ------------------------------------------------
 
 Even if you don't usually read readme files: please read at least the
@@ -7,9 +7,11 @@
 have an non-functional python: it is best to remove all traces and start
 with a fresh distribution. Especially don't forget to remove the
 "python preferences" file from the Preferences folder, and possibly
-"PythonCore" from the Extensions folder. Before you mail me for help *please*
+"PythonCore", "PythonCorePPC" and/or "PythonCoreCFM68K"
+from the Extensions folder. Before you mail me for help *please*
 try the steps above (cleaning up and re-installing): it should fix most
-common mistakes.
+common mistakes. If you are installing a CFM68K python also check that
+your installation of CFM68K was done correctly.
 
 If this is your first encounter with Python: you definitely need the common
 user documentation (common to all platforms). You can find this (in various
@@ -33,10 +35,16 @@
 Note that if you're using Tk you might want to raise the memory size, tcl
 and tk are quite a memory hog.
 
+A final note to CFM68K (and possibly PPC) users: the Code Fragment Manager
+can (incorrectly) produce "library not found" and other strange error messages
+when it really means that there is not enough room in the system heap. Decreasing
+(yes, *de*creasing) the size of the interpreter and/or enabling virtual memory
+may solve these problems.
+
 PowerPC Macintosh instructions
 ------------------------------
 
-1. Remove older versions of "PythonCore" and "Python Preferences"
+1. Remove older versions of "PythonCorePPC", "PythonCore" and "Python Preferences"
    from your system folder.
    
 2. Run the MkPluginAliases applet. This will first ask you whether it should
@@ -46,20 +54,31 @@
    by hand (and tell me what you did to make the script fail:-).
 
 3. To make sure any applets you create can find the common interpreter code
-   you should move PythonCore to the Extensions folder (drop it on the
+   you should move PythonCorePPC to the Extensions folder (drop it on the
    System Folder and it will find its own way). Alternatively, you can
-   make an alias called "PythonCore" in the Extensions folder and
-   point it to the real PythonCore. You may want to start PythonPPC
+   make an alias called "PythonCorePPC" in the Extensions folder and
+   point it to the real PythonCorePPC. You may want to start PythonPPC
    again at this point to check that you actually put the extension in
    the right place.
 
 4. You're all set now. Continue with the common instructions.
 
-68K Macintosh instructions
---------------------------
+CFM68K Macintosh instructions
+-----------------------------
 
-1. Remove old "Python Preferences" file from the Preferences folder, if you
-   have one (the file, that is, not the folder:-).
+For this you need a Mac with a 68020, 68030 or 68040, and at least System 7.1.1.
+CFM68K Python will not run on PowerPC Macs.
+
+1. Install the stuff from the "CFM68K for System Folder" into the Extensions
+   folder and restart.
+   
+2. Continue with the PowerPC instructions, but read "CFM68K" every time you see
+   "PPC".
+
+Classic 68K Macintosh instructions
+----------------------------------
+
+1. Remove the old "Python Preferences" file from the Preferences folder, if there is one.
    
 2. Run Python68K. This will create an initial preferences file (after
    asking you if that's ok with you). Quit python.
@@ -76,22 +95,21 @@
 Next, try "compileall.py" from :Lib to create all .pyc files (but this isn't
 really important).
 
-PPC users have a couple of applets in the main folder they may want to try,
+PPC and CFM68K users have a couple of applets in the main folder they may want to try,
 (68K users can use the corresponding scripts from the "scripts" folder):
 
 - EditPythonPrefs allows you to edit the preferences file, to change the
   python home folder or modify the initial sys.path setting.
-  The default settings are "liberal", you can remove stdwin and tkinter if
-  you don't use them and maybe others.
-- RunLibScript allows you to run any script as __main__ after setting arguments,
-  changing stdin/stdout/workdir, etc. Most of this functionality can also be
-  obtained nowadays by option-dragging a script to the interpreter.
-- For PPC only, mkapplet creates a python applet, a tiny application written
+  The default settings are somewhat arbitrary, you can remove tkinter if
+  you don't use it and possibly add Extensions:img:Lib.
+- mkapplet creates a python applet, a tiny application written
   in python. Drop a python source on it and out comes the application. More
   information can be found in the "Mac:Demo" folder.
   
-PPC users will see one more files in the python folder: PythonApplet. This is
-the template for building applets, leave it alone.
+PPC and CFM68K users will see one more files in the python folder: PythonApplet. This is
+the template for building applets, leave it alone. For the 1.4b3 release the applet is
+specific for your installation, i.e. PPC applets will not run on CFM68K machines and vice
+versa. I hope to fix this soon.
 
 Things to see
 -------------
@@ -115,8 +133,12 @@
 --------
 
 Send bug reports, suggestions, contributions and fanmail to <jack@cwi.nl>.
-Be warned however that I'm pretty busy at the moment, so I may not always
+Be warned however that I'm pretty busy, so I may not always
 respond immedeately.
+
+A better way to discuss MacPython is to join the <pythonmac-sig@python.org>
+mailing list, which is explicitly meant for this purpose.
+
 Alternatively, you can try sending to comp.lang.python or python-list@cwi.nl,
 but since I read the newsgroup, not the mailinglist, I may miss it there
 (but other people may know quite a bit more than me anyway:-).
diff --git a/Mac/Relnotes-1.4b3 b/Mac/Relnotes-1.4b3
new file mode 100644
index 0000000..bb4fc41
--- /dev/null
+++ b/Mac/Relnotes-1.4b3
@@ -0,0 +1,171 @@
+	Changes between 1.4b3 and 1.3.3
+	-------------------------------
+
+Aside from all the changes Guido made to the machine-independent part
+of Python the following mac-specific changes have been made:
+
+- The standard 68K Python is built for CFM68K. This means that PPC and
+  68K Python are now largely compatible, both supporting dynamically
+  loaded modules, python applets, etc.
+  As a result of this there have been numerous subtle changes in
+  filenames for PPC plugin modules and such, but these changes should
+  be transparent to Python programs.
+  The one missing module in cfm68k is Macspeech, for which no CFM68K
+  interface library is available (yet?).
+- Raise MemoryError on stack overflow.
+- Python now always uses 8-byte doubles.
+- Removed mactcp, macdnr and stdwin modules from standard
+  distribution.
+- New releases of Tcl/Tk (4.1p1), CWGUSI (1.7.2) and Waste (1.2f) have
+  been incorporated.
+- Macfs.SetFolder method added, which sets initial folder for standard
+  file dialogs.
+- New py_resource module to handle PYC resources.
+- List mgr objects "selFlags" and "listFlags" members now accessible.
+- QuickDraw got a few new symbolic constants.
+- Qt and Cm modules now live in a separate dynamically loadable
+  module, so other toolbox modules work if you don't have QuickTime
+  installed.
+- Old sound mgr calls {Set,Get}SoundVol removed, version number
+  interface changed.
+- Added convenience routines setarrowcursor and setwatchcursor to
+  FrameWork.
+- Bugfixes to time.sleep(), FrameWork, macostools,
+- Minor fixes/additions/updates to demos and documentation in the Demo
+  folder.
+- Internal changes:
+  - Ported to CW9
+  - mwerks_????_config.h organization rationalized
+  - Projects renamed to reflect architecture (ppc, cfm68k, 68k).
+  - various defines (HAVE_CONFIG_H, USE_MAC_DYNAMIC_LOADING) no longer
+    needed.
+  - shared-library architecture made more conforming to metrowerks
+    documentation. Check xx plugin projects if you have built your own
+    dynamically loaded modules.
+  
+	
+	Changes between 1.3.3 and 1.3.2
+	--------------------------------
+
+A major change since 1.3.2 is in the organization of the files: The
+Mac folder has mac-specific demo programs, attempts at documentation and
+more. Browse the HTML files in Mac:Demo for more info.
+
+Also, Toolbox:bgen is not needed anymore for normal use: the relevant
+python modules have been moved to Mac:Lib:toolbox.
+
+Other changes:
+- Uses final Tk 4.1 and Tcl 7.5 distributions.
+- Override preferences (stored in the interpreter/applet application)
+  allow overriding of system-wide preferences. Explained in
+  "using.html".
+- New functionality in FrameWork.py:
+  - ScrolledWindow class
+  - enable(), settext(), setitem(), setmark(), seticon(),
+    checkmenu() and delete() methods for menu entries.
+  - event parameter added to idle() method
+  - windowbounds() function helps programmer with staggering windows.
+  - Erase only visRgn on an update event.
+- TextEdit interface module added
+- Waste interface module added
+- Demos for waste, including skeleton for html editor
+- Scrap manager interface added
+- Ctl.FindControl() could return reference to deleted object. Fixed.
+- GrafPorts have an _id attribute (address of grafport) allowing them
+  to be compared (since a new python object is created each time).
+- Standard File folder no longer changed on chdir() (this was
+  introduced in 1.3.2).
+- sys.argv can now be set if you option-drag or option-click a python
+  source.
+- Various dialogs now have sensible defaults.
+- binhextree is now a bit more intelligent about when to binhex.
+- gensuitemodule fixed to hand '****' type arguments.
+
+	Changes between 1.3.2 and 1.3.1
+	-------------------------------
+
+The main reason for the 1.3.2 distribution is the availability of Tk
+for the mac. The Tk port and its integration in Python is definitely
+not bug-free, hence this distribution should be treated as beta
+software at best.
+
+Another major change in this release is that the Python I/O system is
+now based on the GUSI library. This is an I/O library that attempts to
+mimic a Posix I/O system. Hence, modules like socket and select are
+now available in MacPython. If you build dynamically loaded modules
+and you use any unix-like feature such as stat() calls you should
+compile using the GUSI include files.
+
+A third major change is that the MacOS creator code has been changed
+from 'PYTH' to 'Pyth', due to a conflict. This means that you will
+have to change the creator of all your old python programs. The
+distribution contains a script "FixCreator.py" that does this
+recursively for a whole folder.
+
+Here are all the changes since 1.3.1, in no particular order:
+- complex number support added
+- cmath module added
+- startup options ("option-drag" dialog) can be retrieved from the
+  preferences file. EditPythonPrefs hasn't been updated yet, though.
+- Creator changed from PYTH to Pyth
+- {mac,os}.unlink is now also called {mac,os}.remove
+- {mac,os}.mkdir second arg optional
+- dup and fdopen calls added
+- select module added
+- socket module added
+- open(file, '*r') for opening resource forks has been removed. It is
+  replaced by MacOS.openrf(file, 'r'), which returns a simple
+  file-like object to read (or write) resource forks.
+- Added AppleEvent URL suite
+- Added AppleEvent netscape suite
+- QuickDraw globals are now all accessible, as Qd.qd.xxxx
+
+
+	Mac-specific changes between 1.3 and 1.3.1
+	--------------------------------------
+
+Aside from the changes mentioned here there have also been some
+changes in the core python, but these are not documented here.
+However, these changes are mainly bugfixes, so there shouldn't be any
+incompatabilities.
+
+- imgsgi and imgpbm modules added
+- Various hooks installed to allow integration with MacTk (currently
+  disabled)
+- Added support for MacOS Fixed type in toolbox arguments (represented
+  as floats in python)
+- Added option to keep output window open on normal termination
+- Decreased minimum heapsize to run interpreter
+- Added progress-bar to EasyDialogs
+- Fixed socket.getportname()
+- Renamed MACTCP.py to MACTCPconst.py
+
+- Many fixes to FrameWork.py:
+  - Added window.SetPort() method
+  - Added optional bounds and resid parameters to Window.open()
+  - Fixed apple-menu DA handling
+  - Fixed activate-event handling
+  - Added default Application.makeusermenus() (File:Quit only)
+  - Fixed bug with keyboard input handling
+  - added idle() method, called from event loop if there are no events
+    pending
+
+Toolbox modules:
+- component manager module added
+- quicktime module added
+- font manager module added
+- Added color window support
+- Added support to obtain pixmap from a window
+- Added BitMap type
+- Added GrafPort type
+- Added support for PenState, Patterns, FontInfo, RGB colors,
+- Fixed GetPen and SetPt arguments
+- Added read access to members of {C}GrafPort objects
+- Added support for cursors
+- Provide access to some QuickDraw globals
+- Fixed InsetRect, OffsetRect, MapRect
+- Added support for various handles such as PatHandle, CursHandle
+- Added functions to access members of Window objects
+
+
+
