diff --git a/Doc/lib/libframework.tex b/Doc/lib/libframework.tex
index 6b8c5fa..85e3156 100644
--- a/Doc/lib/libframework.tex
+++ b/Doc/lib/libframework.tex
@@ -123,7 +123,7 @@
 can be passed on to other windows like the Sioux console window.
 Calling \code{MacOS.HandleEvent} is not allowed within \var{our_dispatch}
 or its callees, since this may result in an infinite loop if the
-code is called through the python inner-loop event handler.
+code is called through the Python inner-loop event handler.
 \end{funcdesc}
 
 \begin{funcdesc}{asyncevents}{onoff}
diff --git a/Doc/libframework.tex b/Doc/libframework.tex
index 6b8c5fa..85e3156 100644
--- a/Doc/libframework.tex
+++ b/Doc/libframework.tex
@@ -123,7 +123,7 @@
 can be passed on to other windows like the Sioux console window.
 Calling \code{MacOS.HandleEvent} is not allowed within \var{our_dispatch}
 or its callees, since this may result in an infinite loop if the
-code is called through the python inner-loop event handler.
+code is called through the Python inner-loop event handler.
 \end{funcdesc}
 
 \begin{funcdesc}{asyncevents}{onoff}
diff --git a/Doc/libmacic.tex b/Doc/libmacic.tex
index cc09cf0..734ac11 100644
--- a/Doc/libmacic.tex
+++ b/Doc/libmacic.tex
@@ -55,7 +55,7 @@
 and changes the option in the configuration file.
 
 The module knows about various datatypes, and converts the internal IC
-representation to a ``logical'' python datastructure. Running the
+representation to a ``logical'' Python datastructure. Running the
 \module{ic} module standalone will run a test program that lists all
 keys and values in your IC database, this will have to server as
 documentation.
diff --git a/Doc/libmacos.tex b/Doc/libmacos.tex
index e52c9cc..2c59b33 100644
--- a/Doc/libmacos.tex
+++ b/Doc/libmacos.tex
@@ -5,38 +5,41 @@
 \setindexsubitem{(in module MacOS)}
 
 This module provides access to MacOS specific functionality in the
-python interpreter, such as how the interpreter eventloop functions
+Python interpreter, such as how the interpreter eventloop functions
 and the like. Use with care.
 
 Note the capitalisation of the module name, this is a historical
-artefact.
+artifact.
 
 \begin{excdesc}{Error}
 This exception is raised on MacOS generated errors, either from
 functions in this module or from other mac-specific modules like the
 toolbox interfaces. The arguments are the integer error code (the
-\var{OSErr} value) and a textual description of the error code.
+\cdata{OSErr} value) and a textual description of the error code.
 Symbolic names for all known error codes are defined in the standard
-module \var{macerrors}.
+module \module{macerrors}\refstmodindex{macerrors}.
 \end{excdesc}
 
 \begin{funcdesc}{SetEventHandler}{handler}
 In the inner interpreter loop Python will occasionally check for events,
-unless disabled with \var{ScheduleParams}. With this function you
+unless disabled with \function{ScheduleParams()}. With this function you
 can pass a Python event-handler function that will be called if an event
 is available. The event is passed as parameter and the function should return
 non-zero if the event has been fully processed, otherwise event processing
 continues (by passing the event to the console window package, for instance).
 
-Call SetEventHandler without parameter to clear the event handler. Setting
-an eventhandler while one is already set is an error.
+Call \function{SetEventHandler()} without a parameter to clear the
+event handler. Setting an event handler while one is already set is an
+error.
 \end{funcdesc}
 
-\begin{funcdesc}{SchedParams}{\optional{doint, evtmask, besocial, interval, bgyield}}
+\begin{funcdesc}{SchedParams}{\optional{doint\optional{, evtmask\optional{,
+                              besocial\optional{, interval\optional{,
+                              bgyield}}}}}}
 Influence the interpreter inner loop event handling. \var{Interval}
 specifies how often (in seconds, floating point) the interpreter
 should enter the event processing code. When true, \var{doint} causes
-interrupt (command-dot) checking to be done. \var{Evtmask} tells the
+interrupt (command-dot) checking to be done. \var{evtmask} tells the
 interpreter to do event processing for events in the mask (redraws,
 mouseclicks to switch to other applications, etc). The \var{besocial}
 flag gives other processes a chance to run. They are granted minimal
@@ -51,14 +54,14 @@
 \end{funcdesc}
 
 \begin{funcdesc}{HandleEvent}{ev}
-Pass the event record \code{ev} back to the python event loop, or
+Pass the event record \var{ev} back to the Python event loop, or
 possibly to the handler for the \code{sys.stdout} window (based on the
-compiler used to build python). This allows python programs that do
+compiler used to build Python). This allows Python programs that do
 their own event handling to still have some command-period and
 window-switching capability.
 
 If you attempt to call this function from an event handler set through
-\code{SetEventHandler} you will get an exception.
+\function{SetEventHandler()} you will get an exception.
 \end{funcdesc}
 
 \begin{funcdesc}{GetErrorString}{errno}
@@ -68,7 +71,7 @@
 \begin{funcdesc}{splash}{resid}
 This function will put a splash window
 on-screen, with the contents of the DLOG resource specified by
-\code{resid}. Calling with a zero argument will remove the splash
+\var{resid}. Calling with a zero argument will remove the splash
 screen. This function is useful if you want an applet to post a splash screen
 early in initialization without first having to load numerous
 extension modules.
@@ -87,7 +90,7 @@
 
 \begin{funcdesc}{openrf}{name \optional{, mode}}
 Open the resource fork of a file. Arguments are the same as for the
-builtin function \code{open}. The object returned has file-like
-semantics, but it is not a python file object, so there may be subtle
+built-in function \function{open()}. The object returned has file-like
+semantics, but it is not a Python file object, so there may be subtle
 differences.
 \end{funcdesc}
diff --git a/Doc/libmacostools.tex b/Doc/libmacostools.tex
index c4c5842..8475522 100644
--- a/Doc/libmacostools.tex
+++ b/Doc/libmacostools.tex
@@ -5,13 +5,12 @@
 This module contains some convenience routines for file-manipulation
 on the Macintosh.
 
-The \code{macostools} module defines the following functions:
+The \module{macostools} module defines the following functions:
 
-\setindexsubitem{(in module macostools)}
 
-\begin{funcdesc}{copy}{src, dst\optional{, createpath, copytimes}}
+\begin{funcdesc}{copy}{src, dst\optional{, createpath\optional{, copytimes}}}
 Copy file \var{src} to \var{dst}. The files can be specified as
-pathnames or \code{FSSpec} objects. If \var{createpath} is non-zero
+pathnames or \pytype{FSSpec} objects. If \var{createpath} is non-zero
 \var{dst} must be a pathname and the folders leading to the
 destination are created if necessary.  The method copies data and
 resource fork and some finder information (creator, type, flags) and
@@ -24,13 +23,13 @@
 
 \begin{funcdesc}{copytree}{src, dst}
 Recursively copy a file tree from \var{src} to \var{dst}, creating
-folders as needed. \var{Src} and \var{dst} should be specified as
+folders as needed. \var{src} and \var{dst} should be specified as
 pathnames.
 \end{funcdesc}
 
 \begin{funcdesc}{mkalias}{src, dst}
 Create a finder alias \var{dst} pointing to \var{src}. Both may be
-specified as pathnames or \var{FSSpec} objects.
+specified as pathnames or \pytype{FSSpec} objects.
 \end{funcdesc}
 
 \begin{funcdesc}{touched}{dst}
@@ -45,7 +44,7 @@
 \end{datadesc}
 
 Note that the process of creating finder aliases is not specified in
-the Apple documentation. Hence, aliases created with \code{mkalias}
+the Apple documentation. Hence, aliases created with \function{mkalias()}
 could conceivably have incompatible behaviour in some cases.
 
 \section{Standard Module \sectcode{findertools}}
@@ -54,14 +53,13 @@
 
 This module contains routines that give Python programs access to some
 functionality provided by the finder. They are implemented as wrappers
-around the AppleEvent interface to the finder.
+around the AppleEvent\index{AppleEvents} interface to the finder.
 
 All file and folder parameters can be specified either as full
-pathnames or as \code{FSSpec} objects.
+pathnames or as \pytype{FSSpec} objects.
 
-The \code{findertools} module defines the following functions:
+The \module{findertools} module defines the following functions:
 
-\setindexsubitem{(in module macostools)}
 
 \begin{funcdesc}{launch}{file}
 Tell the finder to launch \var{file}. What launching means depends on the file:
@@ -71,24 +69,25 @@
 
 \begin{funcdesc}{Print}{file}
 Tell the finder to print a file (again specified by full pathname or
-FSSpec). The behaviour is identical to selecting the file and using
+\pytype{FSSpec}). The behaviour is identical to selecting the file and using
 the print command in the finder.
 \end{funcdesc}
 
 \begin{funcdesc}{copy}{file, destdir}
 Tell the finder to copy a file or folder \var{file} to folder
-\var{destdir}. The function returns an \code{Alias} object pointing to
+\var{destdir}. The function returns an \pytype{Alias} object pointing to
 the new file.
 \end{funcdesc}
 
 \begin{funcdesc}{move}{file, destdir}
 Tell the finder to move a file or folder \var{file} to folder
-\var{destdir}. The function returns an \code{Alias} object pointing to
+\var{destdir}. The function returns an \pytype{Alias} object pointing to
 the new file.
 \end{funcdesc}
 
 \begin{funcdesc}{sleep}{}
-Tell the finder to put the mac to sleep, if your machine supports it.
+Tell the finder to put the Macintosh to sleep, if your machine
+supports it.
 \end{funcdesc}
 
 \begin{funcdesc}{restart}{}
diff --git a/Doc/libmactcp.tex b/Doc/libmactcp.tex
index 122aa5b..790c48e 100644
--- a/Doc/libmactcp.tex
+++ b/Doc/libmactcp.tex
@@ -2,22 +2,23 @@
 \label{module-mactcp}
 \bimodindex{mactcp}
 
-\setindexsubitem{(in module mactcp)}
 
-This module provides an interface to the Macintosh TCP/IP driver
-MacTCP\@. There is an accompanying module \code{macdnr} which provides an
-interface to the name-server (allowing you to translate hostnames to
-ip-addresses), a module \code{MACTCPconst} which has symbolic names for
-constants constants used by MacTCP. Since the builtin module
-\code{socket} is also available on the mac it is usually easier to use
-sockets in stead of the mac-specific MacTCP API.
+This module provides an interface to the Macintosh TCP/IP driver%
+\index{MacTCP} MacTCP\@. There is an accompanying module,
+\module{macdnr}\refbimodindex{macdnr}, which provides an interface to
+the name-server (allowing you to translate hostnames to IP addresses),
+a module \module{MACTCPconst}\refstmodindex{MACTCPconst} which has
+symbolic names for constants constants used by MacTCP. Since the
+built-in module \module{socket} is also available on the Macintosh it
+is usually easier to use sockets instead of the Macintosh-specific
+MacTCP API.
 
 A complete description of the MacTCP interface can be found in the
 Apple MacTCP API documentation.
 
 \begin{funcdesc}{MTU}{}
 Return the Maximum Transmit Unit (the packet size) of the network
-interface.
+interface.\index{Maximum Transmit Unit}
 \end{funcdesc}
 
 \begin{funcdesc}{IPAddr}{}
@@ -34,141 +35,144 @@
 \end{funcdesc}
 
 \begin{funcdesc}{UDPCreate}{size, port}
-Create a UDP stream object. \var{size} is the size of the receive
+Create a UDP Stream object. \var{size} is the size of the receive
 buffer (and, hence, the size of the biggest datagram you can receive
 on this port). \var{port} is the UDP port number you want to receive
 datagrams on, a value of zero will make MacTCP select a free port.
 \end{funcdesc}
 
+
 \subsection{TCP Stream Objects}
 
-\setindexsubitem{(TCP stream attribute)}
-
-\begin{datadesc}{asr}
-When set to a value different than \code{None} this should point to a
+\begin{memberdesc}[TCP Stream]{asr}
+\index{asynchronous service routine}
+\index{service routine, asynchronous}
+When set to a value different than \code{None} this should refer to a
 function with two integer parameters:\ an event code and a detail. This
 function will be called upon network-generated events such as urgent
-data arrival. In addition, it is called with eventcode
-\code{MACTCP.PassiveOpenDone} when a \code{PassiveOpen} completes. This
-is a Python addition to the MacTCP semantics.
-It is safe to do further calls from the \code{asr}.
-\end{datadesc}
+data arrival.  Macintosh documentation calls this the
+\dfn{asynchronous service routine}.  In addition, it is called with
+eventcode \code{MACTCP.PassiveOpenDone} when a \code{PassiveOpen}
+completes. This is a Python addition to the MacTCP semantics.
+It is safe to do further calls from \var{asr}.
+\end{memberdesc}
 
-\setindexsubitem{(TCP stream method)}
 
-\begin{funcdesc}{PassiveOpen}{port}
+\begin{methoddesc}[TCP Stream]{PassiveOpen}{port}
 Wait for an incoming connection on TCP port \var{port} (zero makes the
 system pick a free port). The call returns immediately, and you should
-use \var{wait} to wait for completion. You should not issue any method
-calls other than
-\code{wait}, \code{isdone} or \code{GetSockName} before the call
-completes.
-\end{funcdesc}
+use \method{wait()} to wait for completion. You should not issue any method
+calls other than \method{wait()}, \method{isdone()} or
+\method{GetSockName()} before the call completes.
+\end{methoddesc}
 
-\begin{funcdesc}{wait}{}
+\begin{methoddesc}[TCP Stream]{wait}{}
 Wait for \code{PassiveOpen} to complete.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{isdone}{}
-Return 1 if a \code{PassiveOpen} has completed.
-\end{funcdesc}
+\begin{methoddesc}[TCP Stream]{isdone}{}
+Return \code{1} if a \code{PassiveOpen} has completed.
+\end{methoddesc}
 
-\begin{funcdesc}{GetSockName}{}
+\begin{methoddesc}[TCP Stream]{GetSockName}{}
 Return the TCP address of this side of a connection as a 2-tuple
-\code{(host, port)}, both integers.
-\end{funcdesc}
+\code{(\var{host}, \var{port})}, both integers.
+\end{methoddesc}
 
-\begin{funcdesc}{ActiveOpen}{lport, host, rport}
-Open an outgoing connection to TCP address \code{(\var{host}, \var{rport})}. Use
+\begin{methoddesc}[TCP Stream]{ActiveOpen}{lport, host, rport}
+Open an outgoing connection to TCP address \code{(\var{host},
+\var{rport})}. Use
 local port \var{lport} (zero makes the system pick a free port). This
 call blocks until the connection has been established.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Send}{buf, push, urgent}
-Send data \var{buf} over the connection. \var{Push} and \var{urgent}
+\begin{methoddesc}[TCP Stream]{Send}{buf, push, urgent}
+Send data \var{buf} over the connection. \var{push} and \var{urgent}
 are flags as specified by the TCP standard.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Rcv}{timeout}
+\begin{methoddesc}[TCP Stream]{Rcv}{timeout}
 Receive data. The call returns when \var{timeout} seconds have passed
 or when (according to the MacTCP documentation) ``a reasonable amount
 of data has been received''. The return value is a 3-tuple
-\code{(\var{data}, \var{urgent}, \var{mark})}. If urgent data is outstanding \code{Rcv}
-will always return that before looking at any normal data. The first
-call returning urgent data will have the \var{urgent} flag set, the
-last will have the \var{mark} flag set.
-\end{funcdesc}
+\code{(\var{data}, \var{urgent}, \var{mark})}. If urgent data is
+outstanding \code{Rcv} will always return that before looking at any
+normal data. The first call returning urgent data will have the
+\var{urgent} flag set, the last will have the \var{mark} flag set.
+\end{methoddesc}
 
-\begin{funcdesc}{Close}{}
+\begin{methoddesc}[TCP Stream]{Close}{}
 Tell MacTCP that no more data will be transmitted on this
 connection. The call returns when all data has been acknowledged by
 the receiving side.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Abort}{}
+\begin{methoddesc}[TCP Stream]{Abort}{}
 Forcibly close both sides of a connection, ignoring outstanding data.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Status}{}
+\begin{methoddesc}[TCP Stream]{Status}{}
 Return a TCP status object for this stream giving the current status
 (see below).
-\end{funcdesc}
+\end{methoddesc}
+
 
 \subsection{TCP Status Objects}
+
 This object has no methods, only some members holding information on
 the connection. A complete description of all fields in this objects
 can be found in the Apple documentation. The most interesting ones are:
 
-\setindexsubitem{(TCP status attribute)}
-
-\begin{datadesc}{localHost}
-\dataline{localPort}
-\dataline{remoteHost}
-\dataline{remotePort}
+\begin{memberdesc}[TCP Status]{localHost}
+\memberline{localPort}
+\memberline{remoteHost}
+\memberline{remotePort}
 The integer IP-addresses and port numbers of both endpoints of the
 connection. 
-\end{datadesc}
+\end{memberdesc}
 
-\begin{datadesc}{sendWindow}
+\begin{memberdesc}[TCP Status]{sendWindow}
 The current window size.
-\end{datadesc}
+\end{memberdesc}
 
-\begin{datadesc}{amtUnackedData}
+\begin{memberdesc}[TCP Status]{amtUnackedData}
 The number of bytes sent but not yet acknowledged. \code{sendWindow -
-amtUnackedData} is what you can pass to \code{Send} without blocking.
-\end{datadesc}
+amtUnackedData} is what you can pass to \method{Send()} without
+blocking.
+\end{memberdesc}
 
-\begin{datadesc}{amtUnreadData}
-The number of bytes received but not yet read (what you can \code{Recv}
-without blocking).
-\end{datadesc}
+\begin{memberdesc}[TCP Status]{amtUnreadData}
+The number of bytes received but not yet read (what you can
+\method{Recv()} without blocking).
+\end{memberdesc}
 
 
 
 \subsection{UDP Stream Objects}
+
 Note that, unlike the name suggests, there is nothing stream-like
 about UDP.
 
-\setindexsubitem{(UDP stream attribute)}
 
-\begin{datadesc}{asr}
+\begin{memberdesc}[UDP Stream]{asr}
+\index{asynchronous service routine}
+\index{service routine, asynchronous}
 The asynchronous service routine to be called on events such as
-datagram arrival without outstanding \code{Read} call. The \code{asr} has a
-single argument, the event code.
-\end{datadesc}
+datagram arrival without outstanding \code{Read} call. The \var{asr}
+has a single argument, the event code.
+\end{memberdesc}
 
-\begin{datadesc}{port}
-A read-only member giving the port number of this UDP stream.
-\end{datadesc}
+\begin{memberdesc}[UDP Stream]{port}
+A read-only member giving the port number of this UDP Stream.
+\end{memberdesc}
 
-\setindexsubitem{(UDP stream method)}
 
-\begin{funcdesc}{Read}{timeout}
+\begin{methoddesc}[UDP Stream]{Read}{timeout}
 Read a datagram, waiting at most \var{timeout} seconds (-1 is
 infinite).  Return the data.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Write}{host, port, buf}
+\begin{methoddesc}[UDP Stream]{Write}{host, port, buf}
 Send \var{buf} as a datagram to IP-address \var{host}, port
 \var{port}.
-\end{funcdesc}
+\end{methoddesc}
diff --git a/Doc/mac/libframework.tex b/Doc/mac/libframework.tex
index 6b8c5fa..85e3156 100644
--- a/Doc/mac/libframework.tex
+++ b/Doc/mac/libframework.tex
@@ -123,7 +123,7 @@
 can be passed on to other windows like the Sioux console window.
 Calling \code{MacOS.HandleEvent} is not allowed within \var{our_dispatch}
 or its callees, since this may result in an infinite loop if the
-code is called through the python inner-loop event handler.
+code is called through the Python inner-loop event handler.
 \end{funcdesc}
 
 \begin{funcdesc}{asyncevents}{onoff}
diff --git a/Doc/mac/libmacic.tex b/Doc/mac/libmacic.tex
index cc09cf0..734ac11 100644
--- a/Doc/mac/libmacic.tex
+++ b/Doc/mac/libmacic.tex
@@ -55,7 +55,7 @@
 and changes the option in the configuration file.
 
 The module knows about various datatypes, and converts the internal IC
-representation to a ``logical'' python datastructure. Running the
+representation to a ``logical'' Python datastructure. Running the
 \module{ic} module standalone will run a test program that lists all
 keys and values in your IC database, this will have to server as
 documentation.
diff --git a/Doc/mac/libmacos.tex b/Doc/mac/libmacos.tex
index e52c9cc..2c59b33 100644
--- a/Doc/mac/libmacos.tex
+++ b/Doc/mac/libmacos.tex
@@ -5,38 +5,41 @@
 \setindexsubitem{(in module MacOS)}
 
 This module provides access to MacOS specific functionality in the
-python interpreter, such as how the interpreter eventloop functions
+Python interpreter, such as how the interpreter eventloop functions
 and the like. Use with care.
 
 Note the capitalisation of the module name, this is a historical
-artefact.
+artifact.
 
 \begin{excdesc}{Error}
 This exception is raised on MacOS generated errors, either from
 functions in this module or from other mac-specific modules like the
 toolbox interfaces. The arguments are the integer error code (the
-\var{OSErr} value) and a textual description of the error code.
+\cdata{OSErr} value) and a textual description of the error code.
 Symbolic names for all known error codes are defined in the standard
-module \var{macerrors}.
+module \module{macerrors}\refstmodindex{macerrors}.
 \end{excdesc}
 
 \begin{funcdesc}{SetEventHandler}{handler}
 In the inner interpreter loop Python will occasionally check for events,
-unless disabled with \var{ScheduleParams}. With this function you
+unless disabled with \function{ScheduleParams()}. With this function you
 can pass a Python event-handler function that will be called if an event
 is available. The event is passed as parameter and the function should return
 non-zero if the event has been fully processed, otherwise event processing
 continues (by passing the event to the console window package, for instance).
 
-Call SetEventHandler without parameter to clear the event handler. Setting
-an eventhandler while one is already set is an error.
+Call \function{SetEventHandler()} without a parameter to clear the
+event handler. Setting an event handler while one is already set is an
+error.
 \end{funcdesc}
 
-\begin{funcdesc}{SchedParams}{\optional{doint, evtmask, besocial, interval, bgyield}}
+\begin{funcdesc}{SchedParams}{\optional{doint\optional{, evtmask\optional{,
+                              besocial\optional{, interval\optional{,
+                              bgyield}}}}}}
 Influence the interpreter inner loop event handling. \var{Interval}
 specifies how often (in seconds, floating point) the interpreter
 should enter the event processing code. When true, \var{doint} causes
-interrupt (command-dot) checking to be done. \var{Evtmask} tells the
+interrupt (command-dot) checking to be done. \var{evtmask} tells the
 interpreter to do event processing for events in the mask (redraws,
 mouseclicks to switch to other applications, etc). The \var{besocial}
 flag gives other processes a chance to run. They are granted minimal
@@ -51,14 +54,14 @@
 \end{funcdesc}
 
 \begin{funcdesc}{HandleEvent}{ev}
-Pass the event record \code{ev} back to the python event loop, or
+Pass the event record \var{ev} back to the Python event loop, or
 possibly to the handler for the \code{sys.stdout} window (based on the
-compiler used to build python). This allows python programs that do
+compiler used to build Python). This allows Python programs that do
 their own event handling to still have some command-period and
 window-switching capability.
 
 If you attempt to call this function from an event handler set through
-\code{SetEventHandler} you will get an exception.
+\function{SetEventHandler()} you will get an exception.
 \end{funcdesc}
 
 \begin{funcdesc}{GetErrorString}{errno}
@@ -68,7 +71,7 @@
 \begin{funcdesc}{splash}{resid}
 This function will put a splash window
 on-screen, with the contents of the DLOG resource specified by
-\code{resid}. Calling with a zero argument will remove the splash
+\var{resid}. Calling with a zero argument will remove the splash
 screen. This function is useful if you want an applet to post a splash screen
 early in initialization without first having to load numerous
 extension modules.
@@ -87,7 +90,7 @@
 
 \begin{funcdesc}{openrf}{name \optional{, mode}}
 Open the resource fork of a file. Arguments are the same as for the
-builtin function \code{open}. The object returned has file-like
-semantics, but it is not a python file object, so there may be subtle
+built-in function \function{open()}. The object returned has file-like
+semantics, but it is not a Python file object, so there may be subtle
 differences.
 \end{funcdesc}
diff --git a/Doc/mac/libmacostools.tex b/Doc/mac/libmacostools.tex
index c4c5842..8475522 100644
--- a/Doc/mac/libmacostools.tex
+++ b/Doc/mac/libmacostools.tex
@@ -5,13 +5,12 @@
 This module contains some convenience routines for file-manipulation
 on the Macintosh.
 
-The \code{macostools} module defines the following functions:
+The \module{macostools} module defines the following functions:
 
-\setindexsubitem{(in module macostools)}
 
-\begin{funcdesc}{copy}{src, dst\optional{, createpath, copytimes}}
+\begin{funcdesc}{copy}{src, dst\optional{, createpath\optional{, copytimes}}}
 Copy file \var{src} to \var{dst}. The files can be specified as
-pathnames or \code{FSSpec} objects. If \var{createpath} is non-zero
+pathnames or \pytype{FSSpec} objects. If \var{createpath} is non-zero
 \var{dst} must be a pathname and the folders leading to the
 destination are created if necessary.  The method copies data and
 resource fork and some finder information (creator, type, flags) and
@@ -24,13 +23,13 @@
 
 \begin{funcdesc}{copytree}{src, dst}
 Recursively copy a file tree from \var{src} to \var{dst}, creating
-folders as needed. \var{Src} and \var{dst} should be specified as
+folders as needed. \var{src} and \var{dst} should be specified as
 pathnames.
 \end{funcdesc}
 
 \begin{funcdesc}{mkalias}{src, dst}
 Create a finder alias \var{dst} pointing to \var{src}. Both may be
-specified as pathnames or \var{FSSpec} objects.
+specified as pathnames or \pytype{FSSpec} objects.
 \end{funcdesc}
 
 \begin{funcdesc}{touched}{dst}
@@ -45,7 +44,7 @@
 \end{datadesc}
 
 Note that the process of creating finder aliases is not specified in
-the Apple documentation. Hence, aliases created with \code{mkalias}
+the Apple documentation. Hence, aliases created with \function{mkalias()}
 could conceivably have incompatible behaviour in some cases.
 
 \section{Standard Module \sectcode{findertools}}
@@ -54,14 +53,13 @@
 
 This module contains routines that give Python programs access to some
 functionality provided by the finder. They are implemented as wrappers
-around the AppleEvent interface to the finder.
+around the AppleEvent\index{AppleEvents} interface to the finder.
 
 All file and folder parameters can be specified either as full
-pathnames or as \code{FSSpec} objects.
+pathnames or as \pytype{FSSpec} objects.
 
-The \code{findertools} module defines the following functions:
+The \module{findertools} module defines the following functions:
 
-\setindexsubitem{(in module macostools)}
 
 \begin{funcdesc}{launch}{file}
 Tell the finder to launch \var{file}. What launching means depends on the file:
@@ -71,24 +69,25 @@
 
 \begin{funcdesc}{Print}{file}
 Tell the finder to print a file (again specified by full pathname or
-FSSpec). The behaviour is identical to selecting the file and using
+\pytype{FSSpec}). The behaviour is identical to selecting the file and using
 the print command in the finder.
 \end{funcdesc}
 
 \begin{funcdesc}{copy}{file, destdir}
 Tell the finder to copy a file or folder \var{file} to folder
-\var{destdir}. The function returns an \code{Alias} object pointing to
+\var{destdir}. The function returns an \pytype{Alias} object pointing to
 the new file.
 \end{funcdesc}
 
 \begin{funcdesc}{move}{file, destdir}
 Tell the finder to move a file or folder \var{file} to folder
-\var{destdir}. The function returns an \code{Alias} object pointing to
+\var{destdir}. The function returns an \pytype{Alias} object pointing to
 the new file.
 \end{funcdesc}
 
 \begin{funcdesc}{sleep}{}
-Tell the finder to put the mac to sleep, if your machine supports it.
+Tell the finder to put the Macintosh to sleep, if your machine
+supports it.
 \end{funcdesc}
 
 \begin{funcdesc}{restart}{}
diff --git a/Doc/mac/libmactcp.tex b/Doc/mac/libmactcp.tex
index 122aa5b..790c48e 100644
--- a/Doc/mac/libmactcp.tex
+++ b/Doc/mac/libmactcp.tex
@@ -2,22 +2,23 @@
 \label{module-mactcp}
 \bimodindex{mactcp}
 
-\setindexsubitem{(in module mactcp)}
 
-This module provides an interface to the Macintosh TCP/IP driver
-MacTCP\@. There is an accompanying module \code{macdnr} which provides an
-interface to the name-server (allowing you to translate hostnames to
-ip-addresses), a module \code{MACTCPconst} which has symbolic names for
-constants constants used by MacTCP. Since the builtin module
-\code{socket} is also available on the mac it is usually easier to use
-sockets in stead of the mac-specific MacTCP API.
+This module provides an interface to the Macintosh TCP/IP driver%
+\index{MacTCP} MacTCP\@. There is an accompanying module,
+\module{macdnr}\refbimodindex{macdnr}, which provides an interface to
+the name-server (allowing you to translate hostnames to IP addresses),
+a module \module{MACTCPconst}\refstmodindex{MACTCPconst} which has
+symbolic names for constants constants used by MacTCP. Since the
+built-in module \module{socket} is also available on the Macintosh it
+is usually easier to use sockets instead of the Macintosh-specific
+MacTCP API.
 
 A complete description of the MacTCP interface can be found in the
 Apple MacTCP API documentation.
 
 \begin{funcdesc}{MTU}{}
 Return the Maximum Transmit Unit (the packet size) of the network
-interface.
+interface.\index{Maximum Transmit Unit}
 \end{funcdesc}
 
 \begin{funcdesc}{IPAddr}{}
@@ -34,141 +35,144 @@
 \end{funcdesc}
 
 \begin{funcdesc}{UDPCreate}{size, port}
-Create a UDP stream object. \var{size} is the size of the receive
+Create a UDP Stream object. \var{size} is the size of the receive
 buffer (and, hence, the size of the biggest datagram you can receive
 on this port). \var{port} is the UDP port number you want to receive
 datagrams on, a value of zero will make MacTCP select a free port.
 \end{funcdesc}
 
+
 \subsection{TCP Stream Objects}
 
-\setindexsubitem{(TCP stream attribute)}
-
-\begin{datadesc}{asr}
-When set to a value different than \code{None} this should point to a
+\begin{memberdesc}[TCP Stream]{asr}
+\index{asynchronous service routine}
+\index{service routine, asynchronous}
+When set to a value different than \code{None} this should refer to a
 function with two integer parameters:\ an event code and a detail. This
 function will be called upon network-generated events such as urgent
-data arrival. In addition, it is called with eventcode
-\code{MACTCP.PassiveOpenDone} when a \code{PassiveOpen} completes. This
-is a Python addition to the MacTCP semantics.
-It is safe to do further calls from the \code{asr}.
-\end{datadesc}
+data arrival.  Macintosh documentation calls this the
+\dfn{asynchronous service routine}.  In addition, it is called with
+eventcode \code{MACTCP.PassiveOpenDone} when a \code{PassiveOpen}
+completes. This is a Python addition to the MacTCP semantics.
+It is safe to do further calls from \var{asr}.
+\end{memberdesc}
 
-\setindexsubitem{(TCP stream method)}
 
-\begin{funcdesc}{PassiveOpen}{port}
+\begin{methoddesc}[TCP Stream]{PassiveOpen}{port}
 Wait for an incoming connection on TCP port \var{port} (zero makes the
 system pick a free port). The call returns immediately, and you should
-use \var{wait} to wait for completion. You should not issue any method
-calls other than
-\code{wait}, \code{isdone} or \code{GetSockName} before the call
-completes.
-\end{funcdesc}
+use \method{wait()} to wait for completion. You should not issue any method
+calls other than \method{wait()}, \method{isdone()} or
+\method{GetSockName()} before the call completes.
+\end{methoddesc}
 
-\begin{funcdesc}{wait}{}
+\begin{methoddesc}[TCP Stream]{wait}{}
 Wait for \code{PassiveOpen} to complete.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{isdone}{}
-Return 1 if a \code{PassiveOpen} has completed.
-\end{funcdesc}
+\begin{methoddesc}[TCP Stream]{isdone}{}
+Return \code{1} if a \code{PassiveOpen} has completed.
+\end{methoddesc}
 
-\begin{funcdesc}{GetSockName}{}
+\begin{methoddesc}[TCP Stream]{GetSockName}{}
 Return the TCP address of this side of a connection as a 2-tuple
-\code{(host, port)}, both integers.
-\end{funcdesc}
+\code{(\var{host}, \var{port})}, both integers.
+\end{methoddesc}
 
-\begin{funcdesc}{ActiveOpen}{lport, host, rport}
-Open an outgoing connection to TCP address \code{(\var{host}, \var{rport})}. Use
+\begin{methoddesc}[TCP Stream]{ActiveOpen}{lport, host, rport}
+Open an outgoing connection to TCP address \code{(\var{host},
+\var{rport})}. Use
 local port \var{lport} (zero makes the system pick a free port). This
 call blocks until the connection has been established.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Send}{buf, push, urgent}
-Send data \var{buf} over the connection. \var{Push} and \var{urgent}
+\begin{methoddesc}[TCP Stream]{Send}{buf, push, urgent}
+Send data \var{buf} over the connection. \var{push} and \var{urgent}
 are flags as specified by the TCP standard.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Rcv}{timeout}
+\begin{methoddesc}[TCP Stream]{Rcv}{timeout}
 Receive data. The call returns when \var{timeout} seconds have passed
 or when (according to the MacTCP documentation) ``a reasonable amount
 of data has been received''. The return value is a 3-tuple
-\code{(\var{data}, \var{urgent}, \var{mark})}. If urgent data is outstanding \code{Rcv}
-will always return that before looking at any normal data. The first
-call returning urgent data will have the \var{urgent} flag set, the
-last will have the \var{mark} flag set.
-\end{funcdesc}
+\code{(\var{data}, \var{urgent}, \var{mark})}. If urgent data is
+outstanding \code{Rcv} will always return that before looking at any
+normal data. The first call returning urgent data will have the
+\var{urgent} flag set, the last will have the \var{mark} flag set.
+\end{methoddesc}
 
-\begin{funcdesc}{Close}{}
+\begin{methoddesc}[TCP Stream]{Close}{}
 Tell MacTCP that no more data will be transmitted on this
 connection. The call returns when all data has been acknowledged by
 the receiving side.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Abort}{}
+\begin{methoddesc}[TCP Stream]{Abort}{}
 Forcibly close both sides of a connection, ignoring outstanding data.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Status}{}
+\begin{methoddesc}[TCP Stream]{Status}{}
 Return a TCP status object for this stream giving the current status
 (see below).
-\end{funcdesc}
+\end{methoddesc}
+
 
 \subsection{TCP Status Objects}
+
 This object has no methods, only some members holding information on
 the connection. A complete description of all fields in this objects
 can be found in the Apple documentation. The most interesting ones are:
 
-\setindexsubitem{(TCP status attribute)}
-
-\begin{datadesc}{localHost}
-\dataline{localPort}
-\dataline{remoteHost}
-\dataline{remotePort}
+\begin{memberdesc}[TCP Status]{localHost}
+\memberline{localPort}
+\memberline{remoteHost}
+\memberline{remotePort}
 The integer IP-addresses and port numbers of both endpoints of the
 connection. 
-\end{datadesc}
+\end{memberdesc}
 
-\begin{datadesc}{sendWindow}
+\begin{memberdesc}[TCP Status]{sendWindow}
 The current window size.
-\end{datadesc}
+\end{memberdesc}
 
-\begin{datadesc}{amtUnackedData}
+\begin{memberdesc}[TCP Status]{amtUnackedData}
 The number of bytes sent but not yet acknowledged. \code{sendWindow -
-amtUnackedData} is what you can pass to \code{Send} without blocking.
-\end{datadesc}
+amtUnackedData} is what you can pass to \method{Send()} without
+blocking.
+\end{memberdesc}
 
-\begin{datadesc}{amtUnreadData}
-The number of bytes received but not yet read (what you can \code{Recv}
-without blocking).
-\end{datadesc}
+\begin{memberdesc}[TCP Status]{amtUnreadData}
+The number of bytes received but not yet read (what you can
+\method{Recv()} without blocking).
+\end{memberdesc}
 
 
 
 \subsection{UDP Stream Objects}
+
 Note that, unlike the name suggests, there is nothing stream-like
 about UDP.
 
-\setindexsubitem{(UDP stream attribute)}
 
-\begin{datadesc}{asr}
+\begin{memberdesc}[UDP Stream]{asr}
+\index{asynchronous service routine}
+\index{service routine, asynchronous}
 The asynchronous service routine to be called on events such as
-datagram arrival without outstanding \code{Read} call. The \code{asr} has a
-single argument, the event code.
-\end{datadesc}
+datagram arrival without outstanding \code{Read} call. The \var{asr}
+has a single argument, the event code.
+\end{memberdesc}
 
-\begin{datadesc}{port}
-A read-only member giving the port number of this UDP stream.
-\end{datadesc}
+\begin{memberdesc}[UDP Stream]{port}
+A read-only member giving the port number of this UDP Stream.
+\end{memberdesc}
 
-\setindexsubitem{(UDP stream method)}
 
-\begin{funcdesc}{Read}{timeout}
+\begin{methoddesc}[UDP Stream]{Read}{timeout}
 Read a datagram, waiting at most \var{timeout} seconds (-1 is
 infinite).  Return the data.
-\end{funcdesc}
+\end{methoddesc}
 
-\begin{funcdesc}{Write}{host, port, buf}
+\begin{methoddesc}[UDP Stream]{Write}{host, port, buf}
 Send \var{buf} as a datagram to IP-address \var{host}, port
 \var{port}.
-\end{funcdesc}
+\end{methoddesc}
