diff --git a/Doc/templates/module.tex b/Doc/templates/module.tex
index 7465af8..5c702e5 100644
--- a/Doc/templates/module.tex
+++ b/Doc/templates/module.tex
@@ -1,40 +1,121 @@
-% Template for library sections.
-% Replace text in ALL CAPS by your own text.
-% Comments starting with %** give additional directions.
-
-%** Choose one of the following two section headings:
-\section{Built-in module {\tt YOUR-MODULE-NAME}} % If written in C
-\section{Standard module {\tt YOUR-MODULE-NAME}} % If written in Python
-
-PUT A SHORT INTRODUCTION AND DESCRIPTION OF THE MODULE HERE.
-
-%** change this sentence to taste:
-The module defines the following variables and functions:
-
-\begin{description}
-
-\renewcommand{\indexsubitem}{(in module YOUR-MODULE-NAME)}
+% Template for a library manual section.
+% PLEASE REMOVE THE COMMENTS AFTER USING THE TEMPLATE
 
 
-%** You can mix exceptions, variables and functions below; often it is a
-%** good idea to alphabetize them all.
+% ==== 1. ====
+% Choose one of the following section headers and index entries;
+% \section{} generates the section header,
+% \bimodindex{} or \stmodundex{} generates an index entry for this module
+
+\section{Built-in module \sectcode{spam}}	% If implemented in C
+\bimodindex[spam}
+
+\section{Standard module \sectcode{spam}}	% If implemented in Python
+\stmodindex{spam}
 
 
-%** repeat the following for each exception:
-\excitem{NAME}
-DESCRIPTION OF THE EXCEPTION GOES HERE.
+% ==== 2. ====
+% Give a short overview of what the module does.
+% If it is platform specific, mention this.
+% Mention other important restrictions or general operating principles.
+% For example:
+
+The \code{spam} module defines operations for handling cans of Spam.
+It knows the four generally available Spam varieties and understands
+both can sizes.
+
+Because spamification requires UNIX process management, the module is
+only available on genuine UNIX systems.
 
 
-%** repeat the following for each variable (or constant):
-\dataitem{NAME}
-DESCRIPTION OF THE VARIABLE/CONSTANT GOES HERE.
+% ==== 3. ====
+% List the public functions defined by the module.  Begin with a
+% standard phrase.  You may also list the exceptions and other data
+% items defined in the module, insofar as they are important for the
+% user.
+
+The \code{spam} module defines the following functions:
+
+% ---- 3.1. ----
+% Redefine the ``indexsubitem'' macro to point to this module:
+
+\renewcommand{\indexsubitem}{(in module spam)}
+
+% ---- 3.2. ----
+% For each function, use a ``funcdesc'' block.  This has exactly two
+% parameters (each parameters is contained in a set of curly braces):
+% the first parameter is the function name (this automatically
+% generates an index entry); the second parameter is the function's
+% argument list.  If there are no arguments, use an empty pair of
+% curly braces.  If there is more than one argument, separate the
+% arguments with backslash-comma.  Optional parts of the parameter
+% list are contained in \optional{...} (this generates a set of square
+% brackets around its parameter).  Arguments are automatically set in
+% italics in the parameter list.  Each argument should be mentioned at
+% least once in the description; each usage (even inside \code{...})
+% should be enclosed in \var{...}.
+
+\begin{funcdesc}{open}{filename\optional{\, mode\, buffersize}}
+Open the file \var{filename} as a can of Spam.  The optional
+\var{mode} and \var{buffersize} arguments specify the read-write mode
+(\code{'r'} (default) or \code{'w'}) and the buffer size (default:
+system dependent).
+\end{funcdesc}
+
+% ---- 3.3. ----
+% Data items are described using a ``datadesc'' block.  This has only
+% one parameter: the item's name.
+
+\begin{datadesc}{cansize}
+The default can size, in ounces.  Legal values are 7 and 12.  The
+default varies per supermarket.  This variable should not be changed
+once the \code{open()} function has been called.
+\end{datadesc}
+
+% --- 3.4. ---
+% Exceptions are described using a ``excdesc'' block.  This has only
+% one parameter: the exception name.
+
+\begin{excdesc}{error}
+Exception raised when an operation fails for a Spam specific reason.
+The exception argument is a string describing the reason of the
+failure.
+\end{excdesc}
+
+% ---- 3.5. ----
+% There is no standard block type for classes.  I generally use
+% ``funcdesc'' blocks, since class instantiation looks very much like
+% a function call.
 
 
-%** repeat the following for each function:
-\funcitem{NAME}{PARAMETERS} % Don't include the parentheses
-DESCRIPTION OF THE FUNCTION GOES HERE.
+% ==== 4. ====
+% Now is probably a good time for a complete example.  (Alternatively,
+% an example giving the flavor of the module may be given before the
+% detailed list of functions.)
 
+Example:
 
-\end{description}
+\begin{verbatim}
+>>> import spam
+>>> can = spam.open('/etc/passwd')
+>>> can.empty()
+>>> can.close()
+\end{verbatim}
 
-ADDITIONAL HINTS FOR USING THE MODULE MAY GO HERE.
+% ==== 5. ====
+% If your module defines new object types (for a built-in module) or
+% classes (for a module written in Python), you should list the
+% methods and instance variables (if any) of each type or class in a
+% separate subsection.  It is important to redefine ``indexsubitem''
+% for each subsection.
+
+\subsection{Spam methods}
+
+Spam objects (returned by \code{open()} above) have the following
+methods.
+
+\renewcommand{\indexsubitem}{(spam method)}
+
+\begin{funcdesc}{empty}{}
+Empty the can into the trash.
+\end{funcdesc}
