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}
