diff --git a/Tools/pynche/README b/Tools/pynche/README
index 586e75f..48e896a 100644
--- a/Tools/pynche/README
+++ b/Tools/pynche/README
@@ -2,135 +2,236 @@
 Copyright (C) 1998 CNRI
 Author: Barry A. Warsaw <bwarsaw@python.org>
 
-Pynche is a color editor based largely on a similar program that I
-originally back in 1987 for the Sunview window system.  That editor
-was called ICE, the Interactive Color Editor.  I'd always wanted to
-port this program to X but didn't feel like hacking X and C code to do
-it.  Fast forward many years, to where Python + Tkinter provides such
-a nice programming environment, with enough power, that I finally
-buckled down and implemented it.  I changed the name because these
-days, too many other systems have the acronym `ICE'.
+Introduction
 
-Pynche has been tested with Python 1.5.1 using Tk 8.0.  It probably
-works with Python 1.5.  I've tested it on both Solaris 2.6 and Windows 
-NT.  There are some funky things that happen on Windows but I think
-they are primarily Tk problems.  You'll want to be sure to have Tk
-8.0.3 for Windows.  Also, Pynche is very colormap intensive, so it
-doesn't work very well on 8-bit graphics cards.  I'll probably fix
-that in the future.
+    Pynche is a color editor based largely on a similar program that I
+    originally wrote back in 1987 for the Sunview window system.  That
+    editor was called ICE, the Interactive Color Editor.  I'd always
+    wanted to port this program to X but didn't feel like hacking X
+    and C code to do it.  Fast forward many years, to where Python +
+    Tkinter provides such a nice programming environment, with enough
+    power, that I finally buckled down and re-implemented it.  I
+    changed the name because these days, too many other systems have
+    the acronym `ICE'.
 
-Pynche must find a text database of colors, in the X11 format.  Pynche
-is distributed with an rgb.txt file from the X11R6.4 distribution for
-this reason, but you can use a different file with the -d option.  The
-file xlicense.txt contains the license only for rgb.txt.
+    Pynche has been tested with Python 1.5.1 using Tk 8.0.  It
+    probably works with Python 1.5.  I've tested it on both Solaris
+    2.6 and Windows NT.  There are some funky things that happen on
+    Windows but I think they are primarily Tk problems.  You'll want
+    to be sure to have Tk 8.0.3 for Windows.  Also, Pynche is very
+    colormap intensive, so it doesn't work very well on 8-bit graphics
+    cards.  I'll probably fix that in the future.
 
-Pynche is pronounced `Pinch-ee'.  Start it by running the `pynche'
-script.  On Windows, run pynche.pyw to inhibit the console window.
+    Pynche must find a text database of colors, in the X11 format.
+    Pynche is distributed with an rgb.txt file from the X11R6.4
+    distribution for this reason, but you can use a different file
+    with the -d option.  The file xlicense.txt contains the license
+    only for rgb.txt and both files are in the X/ subdirectory.
 
-The top part of the main Pynche window contains the "variation
-strips".  Each strip contains a number of "color chips".  The strips
-always indicate the currently selected color by a highlight rectangle
-around the selected color chip, with an arrow pointing to the chip.
-Each arrow has an associated number giving you the color value along
-the variation's axis.  Each variation strip shows you the colors that
-are reachable from the selected color by varying just one axis of the
-color solid.
+    Pynche is pronounced `Pinch-ee'.
 
-For example, when the selected color is (in Red/Green/Blue notation)
-127/127/127, the Red Variations strip shows you every color in the
-range 0/127/127 to 255/127/127.  Similarly for the green and blue
-axes.  You can select any color by clicking on its chip.  This will
-update the highlight rectangle and the arrow, as well as other
-displays in Pynche.
+Running Standalone
 
-Click on "Update while dragging" if you want Pynche to update the
-selected color while you drag along any variation strip (this will be
-slower).  Click on "Hexadecimal" to display the arrow numbers in hex.
+    On Unix, start it by running the `pynche' script.  On Windows, run
+    pynche.pyw to inhibit the console window.  When run from the
+    command line, the following options are recognized:
 
-In the lower left corner of the main window you see two larger color
-chips.  The Selected chip shows you a larger version of the color
-selected in the variation strips, along with its X11 color
-specification.  The Nearest chip shows you the closest color in the
-X11 database to the selected color, giving its X11 color name.
-Clicking on the Nearest color chip selects that color.  Color distance 
-is calculated in the 3D space of the RGB color solid and if more than
-one color name is the same distance from the selected color, the first 
-one found will be chosen.
+    --database file
+    -d file
+        Alternate location of the color database file.  Without this
+        option, the first of /usr/openwin/lib/rgb.txt or X/rgb.txt
+        will be used.
 
-Note that there may be more than one X11 color name for the same RGB
-value.  In that case, the first one found in the text database is
-designated the "primary" name, and this is shown under the Nearest
-chip.  The other names are "aliases" and they are visible in other
-Pynche windows.
+    --initfile file
+    -i file
+        Alternate location of the persistent initialization file.  See 
+        the section on Persistency below.
 
-At the lower right of the main window are three entry fields.  Here
-you can type numeric values for any of the three color axes.  Legal
-values are between 0 and 255, and these fields do not allow you to
-enter illegal values.  You must hit Enter or Tab to select the new
-color.
+    --ignore
+    -X
+        Ignore the persistent initialization file when starting up.
+        Pynche will still write the current option settings to the
+        persistent init file when it quits.
 
-Click on "Update while typing" if you want Pynche to select the color
-on every keystroke (well, every one that produces a legal value!).
-Click on "Hexadecimal" to display and enter color values in hex.
+    --help
+    -h
+	Print the help message.
 
-There are three secondary windows which are not displayed by default.
-You can bring these up via the "View" menu on the main Pynche window.
+    initialcolor
+	a Tk color name or #rrggbb color spec to be used as the
+	initially selected color.  This overrides any color saved in
+	the persistent init file.  Since `#' needs to be escaped in
+	many shells, it is optional in the spec (e.g. #45dd1f is the
+	same as 45dd1f).
 
-The "Text Window" allows you to see what effects various colors have
-on the standard Tk text widget elements.  In the upper part of the
-window is a plain Tk text widget and here you can edit the text,
-select a region of text, etc.  Below this is a button "Track color
-changes".  When this is turned on, any colors selected in the other
-windows will change the text widget element specified in the radio
-buttons below.  When this is turned off, text widget elements are not
-affected by color selection.
+Running as a Modal Dialog
 
-You can choose which element gets changed by color selection by
-clicking on one of the radio buttons in the bottom part of this
-window.  Text foreground and background affect the text in the upper
-part of the window.  Selection foreground and background affect the
-colors of the primary selection which is what you see when you click
-the middle button (depending on window system) and drag it through
-some text.
+    Pynche can be run as a modal dialog, inside another application.
+    It supports the API implemented by the Tkinter standard
+    tkColorChooser module, with a few changes.  By importing
+    pyColorChooser from the Pynche package, you can run
 
-The Insertion is the insertion cursor in the text window, where new
-text will be inserted as you type.  The insertion cursor only has a
-background.
+        pyColorChooser.askcolor(master=window)
 
-The "Color List" window shows every color in the text database.  This
-is the primary reason why Pynche doesn't work so well on 8-bit
-screens.  In the upper part of the window you see a scrolling list of
-all the color names in the database, in alphabetical order.  Click on
-any color to select it.  In the bottom part of the window is displayed 
-any aliases for the selected color (those color names that have the
-same RGB value, but were found later in the text database).  For
-example, find the color "Black" and you'll see that its aliases are
-"gray0" and "grey0".
+    where `window' is an Tkinter parent window object.  Without the
+    `master' keyword argument, Pynche runs standalone.
 
-If the color has no aliases you'll see "<no aliases>" here.  If you
-just want to see if a color has an alias, and do not want to select a
-color when you click on it, turn off "Update on Click".
+    There are some UI differences when running as a modal
+    vs. standalone.  When running as a modal, there is no "File" menu,
+    but instead there are "Okay" and "Cancel" buttons.
 
-Note that the color list is always updated when a color is selected
-from the main window.  There's no way to turn this feature off.  If
-the selected color has no matching color name you'll see
-"<no matching color>" in the Aliases window.
+    When "Okay" is hit, askcolor() returns the tuple
 
-The "Details" window gives you more control over color selection than
-just clicking on a color chip in the main window.  The row of buttons
-along the top apply the specified increment and decrement amounts to
-the selected color.  These delta amounts are applied to the variation
-strips specified by the check boxes labeled "Move Sliders".  Thus if
-just Red and Green are selected, hitting -10 will subtract 10 from the 
-color value along the red and green variation only.  Note the message
-under the checkboxes; this indicates the primary color level being
-changed when more than one slider is tied together.  For example, if
-Red and Green are selected, you will be changing the Yellow level of
-the selected color.
+	((r, g, b), "name")
 
-The "At Boundary" behavior determines what happens when any color
-variation hits either the lower or upper boundaries (0 or 255) as a
-result of clicking on the top row buttons:
+    where r, g, and b are red, green, and blue color values
+    respectively (in the range 0 to 255).  "name" will be a color name
+    from the color database if there is an exact match, otherwise it
+    will be an X11 color spec of the form "#rrggbb".  Note that this
+    is different than tkColorChooser, which doesn't know anything
+    about color names.
+
+    When the optional keyword `wantspec' is true, a #rrggbb color spec 
+    will always be returned instead of a color name.
+
+    askcolor() also supports the following optional keyword arguments
+    which parallel the command line options described above:
+
+	initialcolor
+
+	databasefile
+	    similar to the --database option, the value must be a
+	    file name
+
+	initfile
+	    similar to the --initfile option, the value must be a
+	    file name
+
+	ignore
+	    similar to the --ignore flag, the value is a boolean
+
+The Colorstrip Window
+
+    The top part of the main Pynche window contains the "variation
+    strips".  Each strip contains a number of "color chips".  The
+    strips always indicate the currently selected color by a highlight
+    rectangle around the selected color chip, with an arrow pointing
+    to the chip.  Each arrow has an associated number giving you the
+    color value along the variation's axis.  Each variation strip
+    shows you the colors that are reachable from the selected color by
+    varying just one axis of the color solid.
+
+    For example, when the selected color is (in Red/Green/Blue
+    notation) 127/127/127, the Red Variations strip shows you every
+    color in the range 0/127/127 to 255/127/127.  Similarly for the
+    green and blue axes.  You can select any color by clicking on its
+    chip.  This will update the highlight rectangle and the arrow, as
+    well as other displays in Pynche.
+
+    Click on "Update while dragging" if you want Pynche to update the
+    selected color while you drag along any variation strip (this will
+    be slower).  Click on "Hexadecimal" to display the arrow numbers
+    in hex.
+
+The Proof Window
+
+    In the lower left corner of the main window you see two larger
+    color chips.  The Selected chip shows you a larger version of the
+    color selected in the variation strips, along with its X11 color
+    specification.  The Nearest chip shows you the closest color in
+    the X11 database to the selected color, giving its X11 color name.
+    Clicking on the Nearest color chip selects that color.  Color
+    distance is calculated in the 3D space of the RGB color solid and
+    if more than one color name is the same distance from the selected
+    color, the first one found will be chosen.
+
+    Note that there may be more than one X11 color name for the same
+    RGB value.  In that case, the first one found in the text database
+    is designated the "primary" name, and this is shown under the
+    Nearest chip.  The other names are "aliases" and they are visible
+    in other Pynche windows.
+
+The Type-in Window
+
+    At the lower right of the main window are three entry fields.
+    Here you can type numeric values for any of the three color axes.
+    Legal values are between 0 and 255, and these fields do not allow
+    you to enter illegal values.  You must hit Enter or Tab to select
+    the new color.
+
+    Click on "Update while typing" if you want Pynche to select the
+    color on every keystroke (well, every one that produces a legal
+    value!)  Click on "Hexadecimal" to display and enter color values
+    in hex.
+
+Other Views
+
+    There are three secondary windows which are not displayed by
+    default.  You can bring these up via the "View" menu on the main
+    Pynche window.
+
+The Text Window
+
+    The "Text Window" allows you to see what effects various colors
+    have on the standard Tk text widget elements.  In the upper part
+    of the window is a plain Tk text widget and here you can edit the
+    text, select a region of text, etc.  Below this is a button "Track
+    color changes".  When this is turned on, any colors selected in
+    the other windows will change the text widget element specified in
+    the radio buttons below.  When this is turned off, text widget
+    elements are not affected by color selection.
+
+    You can choose which element gets changed by color selection by
+    clicking on one of the radio buttons in the bottom part of this
+    window.  Text foreground and background affect the text in the
+    upper part of the window.  Selection foreground and background
+    affect the colors of the primary selection which is what you see
+    when you click the middle button (depending on window system) and
+    drag it through some text.
+
+    The Insertion is the insertion cursor in the text window, where
+    new text will be inserted as you type.  The insertion cursor only
+    has a background.
+
+The Color List Window
+
+    The "Color List" window shows every color in the text database
+    (this window may take a while to come up).  In the upper part of
+    the window you see a scrolling list of all the color names in the
+    database, in alphabetical order.  Click on any color to select it.
+    In the bottom part of the window is displayed any aliases for the
+    selected color (those color names that have the same RGB value,
+    but were found later in the text database).  For example, find the
+    color "Black" and you'll see that its aliases are "gray0" and
+    "grey0".
+
+    If the color has no aliases you'll see "<no aliases>" here.  If you
+    just want to see if a color has an alias, and do not want to select a
+    color when you click on it, turn off "Update on Click".
+
+    Note that the color list is always updated when a color is selected
+    from the main window.  There's no way to turn this feature off.  If
+    the selected color has no matching color name you'll see
+    "<no matching color>" in the Aliases window.
+
+The Details Window
+
+    The "Details" window gives you more control over color selection
+    than just clicking on a color chip in the main window.  The row of
+    buttons along the top apply the specified increment and decrement
+    amounts to the selected color.  These delta amounts are applied to
+    the variation strips specified by the check boxes labeled "Move
+    Sliders".  Thus if just Red and Green are selected, hitting -10
+    will subtract 10 from the color value along the red and green
+    variation only.  Note the message under the checkboxes; this
+    indicates the primary color level being changed when more than one
+    slider is tied together.  For example, if Red and Green are
+    selected, you will be changing the Yellow level of the selected
+    color.
+
+    The "At Boundary" behavior determines what happens when any color
+    variation hits either the lower or upper boundaries (0 or 255) as
+    a result of clicking on the top row buttons:
 
     Stop
         When the increment or decrement would send any of the tied
@@ -157,7 +258,7 @@
         way, all tied variations are squashed to one edge or the
         other.
 
-The top row buttons have the following keyboard accelerators:
+    The top row buttons have the following keyboard accelerators:
 
     -25 == Shift Left Arrow
     -10 == Control Left Arrow
@@ -166,9 +267,37 @@
     +10 == Control Right Arrow
     +25 == Shift Right Arrow
 
-Other keyboard accelerators:
+Keyboard Accelerators
 
     Alt-w in any secondary window dismisses the window.  In the main
-    window it exits Pynche.
+    window it exits Pynche (except when running as a modal).
 
-    Alt-q in any window exits Pynche.
+    Alt-q in any window exits Pynche (except when running as a modal).
+
+Persistency
+
+    Pynche remembers various settings of options and colors between
+    invocations, storing these values in a `persistent initialization
+    file'.  The actual location of this file is specified by the
+    --initfile option (see above), and defaults to ~/.pynche.
+
+    When Pynche exits, it saves these values in the init file, and
+    re-reads them when it starts up.  There is no locking on this
+    file, so if you run multiple instances of Pynche at a time, you
+    will override the init file.
+
+    The actual options stored include
+
+    - the currently selected color
+
+    - all settings of checkbox and radio button options in all windows
+
+    - the contents of the text window, the current text selection and
+      insertion point, and all current text widget element color
+      settings.
+
+    You can inhibit Pynche from reading the init file by supplying the
+    --ignore option on the command line.  However, you cannot suppress
+    the storing of the settings in the init file on Pynche exit.  If
+    you really want to do this, use /dev/null as the init file, using
+    --initfile.
