diff --git a/tutorial/tutorial.wmml b/tutorial/tutorial.wmml
index 55905f6c3c314f8a17a9e81cf8b6b9829f045514..ed47c1141ec53cbb05ed93ad0d53fdfebbe9a814 100644
--- a/tutorial/tutorial.wmml
+++ b/tutorial/tutorial.wmml
@@ -5117,109 +5117,85 @@ as appending 's' to an empty string 'num' times.
 </section>
 
 <section title="Array">
+<module name="Array" title="supplemental Array handling functions">
 As with <tt>String</tt> these functions are Pike functions written to
 supplement those written in C.
 
 <hr noshade size=1>
-<anchor name=Array.map>
-<dl>
-<dt><encaps>NAME</encaps><dd>
-<tt>Array.map</tt> - map an array or mapping over a function
-<p>
-<dt><encaps>SYNTAX</encaps><dd>
-<tt>array map(array <I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br>
+
+<function name=Array.map title="map an array or mapping over a function">
+<man_syntax>
+array map(array <I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br>
 array map(array(object) <I>arr</I>,string <I>fun</I>,mixed ... <I>args</I>);<br>
 array map(array(function) <I>arr</I>,-<I>1</I>,mixed ... <I>arg</I>);<br>
-</tt>
-<p>
-
-
-<dt><encaps>DESCRIPTION</encaps><dd>
-First syntax:
+</man_syntax>
+<man_description>
+First syntax:<br>
 Map array returns an array holding the items of arr mapped through
 the function fun. ie. arr[x]=fun(arr[x], @args) for all x.
-<p>Second syntax:
+<p>Second syntax:<br>
 Map array calls function fun in all objects in the array arr.
 ie. arr[x]=arr[x]-&gt;fun(@ args);
-<p>Third syntax:
+<p>Third syntax:<br>
 Map array calls the functions in the array arr:
 arr[x]=arr[x]-&gt;fun(@ args);
-<p>
-<dt><encaps>SEE ALSO</encaps><dd>
-<link to=Array.sum_arrays>Array.sum_arrays</link> and <link to=Array.filter>Array.filter</link>
-<p>
-</dl>
+</man_description>
+<man_see>
+Array.sum_arrays, Array.filter
+</man_see>
+</function>
 
-</anchor>
 <hr noshade size=1>
-<anchor name=Array.filter>
-<dl>
-<dt><encaps>NAME</encaps><dd>
-<tt>Array.filter</tt> - filter an array or mapping through a function
-<p>
-<dt><encaps>SYNTAX</encaps><dd>
-<tt>array filter(array <I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br>
+
+<function name=Array.filter title="filter an array or mapping through a function">
+<man_syntax>
+array filter(array <I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br>
 array filter(array(object) <I>arr</I>,string <I>fun</I>,mixed ... <I>args</I>);<br>
-or<br>
 array filter(array(function) <I>arr</I>,-<I>1</I>,mixed ... <I>args</I>);<br>
-</tt>
-<p>
-
-<dt><encaps>DESCRIPTION</encaps><dd>
-First syntax:
+</man_syntax>
+<man_description>
+First syntax:<br>
 Filter array returns an array holding the items of arr for which
 fun returns true.
-<p>Second syntax:
+<p>Second syntax:<br>
 Filter array calls fun in all the objects in the array arr, and
 return all objects that returned true.
-<p>Third syntax:
+<p>Third syntax:<br>
 Filter array calls all function pointers in the array arr, and
 return all that returned true.
-<p>
-<dt><encaps>SEE ALSO</encaps><dd>
-<link to=Array.sum_arrays>Array.sum_arrays</link> and <link to=Array.map>Array.map</link>
-</dl>
-</anchor>
-
+</man_description>
+<man_see>
+Array.sum_arrays, Array.map
+</man_see>
+</function>
 
 <hr noshade size=1>
-<anchor name=Array.search_array>
-<dl>
-<dt><encaps>NAME</encaps><dd>
-<tt>Array.search_array</tt> - search for something in an array
-<p>
-<dt><encaps>SYNTAX</encaps><dd>
-<tt>int search_array(mixed *<I>arr</I>,function <I>fun</I>,mixed <I>arg</I>, ...);<br>
-or<br>
+
+<function name=Array.search_array title="search for something in an array">
+<man_syntax>
+int search_array(mixed *<I>arr</I>,function <I>fun</I>,mixed <I>arg</I>, ...);<br>
 int search_array(object *<I>arr</I>,string <I>fun</I>,mixed <I>arg</I>, ...);<br>
-or<br>
-int search_array(function *<I>arr</I>,-<I>1</I>,mixed <I>arg</I>, ...);<br>
-</tt>
-<p>
-<dt><encaps>DESCRIPTION</encaps><dd>
+int search_array(function *<I>arr</I>,-<I>1</I>,mixed <I>arg</I>, ...);
+</man_syntax>
+<man_description>
 search_array works like map_array, only it returns the index of the
 first call that returned true instead or returning an array of the
 returned values. If no call returns true, -1 is returned.
-<p>
-<dt><encaps>SEE ALSO</encaps><dd>
-<link to=Array.sum_arrays>Array.sum_arrays</link> and <link to=Array.filter>Array.filter</link>
-<p>
-</dl>
-</anchor>
+</man_description>
+<man_see>
+Array.sum_arrays, Array.filter
+</man_see>
+</function>
 
 <hr noshade size=1>
-<anchor name=Array.sum_arrays>
-<dl>
-<dt><encaps>NAME</encaps><dd>
-<tt>Array.sum_arrays</tt> - map any number of arrays over a function.
-<p>
-<dt><encaps>SYNTAX</encaps><dd>
-<tt>mixed *sum_arrays(function <I>fun</I>,mixed *<I>arr1</I>,...);<br>
-</tt>
-<p>
-<dt><encaps>DESCRIPTION</encaps><dd>
+
+<function name=Array.sum_arrays title="map any number of arrays over a function">
+<man_syntax>
+mixed *sum_arrays(function <I>fun</I>,mixed *<I>arr1</I>,...);
+</man_syntax>
+<man_description>
 Works like this:
-<p>mixed *sum_arrays(function fun,mixed *arr1,...)<br>
+<p><tt>mixed *sum_arrays(function fun,mixed *arr1,...)<br>
 {<br>
 <dl><dt><dd>int e;<br>
 mixed *res=allocate(sizeof(arr1));<br>
@@ -5229,54 +5205,47 @@ for(e=0;e&lt;sizeof(arr1);e++)<br>
 </dl>}<br>
 return res;<br>
 </dl>}<br>
-
+</tt>
 <p>Simple ehh?
-<p>
-<dt><encaps>SEE ALSO</encaps><dd>
-<link to=Array.map>Array.map</link>, <link to=Array.filter>Array.filter</link> and <link to=Array.search_array>Array.search_array</link>
-</dl>
-</anchor>
+</man_description>
+<man_see>
+Array.map, Array.filter, Array.search_array
+</man_see>
+</function>
 
 <hr noshade size=1>
-<anchor name=Array.sort_array>
-<dl>
-<dt><encaps>NAME</encaps><dd>
-<tt>Array.sort_array</tt> - sort an array
-<p>
-<dt><encaps>SYNTAX</encaps><dd>
-<tt>mixed *sort_array(mixed *<I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br>
-</tt>
-<p>
-<dt><encaps>DESCRIPTION</encaps><dd>
+
+<function name=Array.sort_array title="sort an array">
+<man_syntax>
+mixed *sort_array(mixed *<I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);
+</man_syntax>
+<man_description>
 This function sorts an array after a compare-function <i>fun</i>
 which takes two arguments and should return 1 if the first argument
 is larger then the second. The rest of the arguments <i>args</i> will be
 sent as 3rd, 4th etc. argument to <i>fun</i>. If <i>fun</i> is omitted, `&lt; is used
 instead.
-<p>
-<dt><encaps>SEE ALSO</encaps><dd>
-<link to=Array.map>Array.map</link> and <link to=sort>sort</link>
-</dl>
-</anchor>
+</man_description>
+<man_see>
+Array.map, sort
+</man_see>
+</function>
 
 <hr noshade size=1>
-<anchor name=Array.uniq>
-<dl>
-<dt><encaps>NAME</encaps><dd>
-<tt>Array.uniq</tt> - return one of each element
-<p>
-<dt><encaps>SYNTAX</encaps><dd>
-<tt>array uniq(array <I>a</I>);<br>
-</tt>
-<p>
-<dt><encaps>DESCRIPTION</encaps><dd>
+
+<function name=Array.uniq title="remove elements that are duplicates">
+<man_syntax>
+array uniq(array <I>a</I>);
+</man_syntax>
+<man_description>
 This function returns an copy of the array <i>a</i> with all duplicate
 values removed. The order of the values in the result is undefined.
-<p>
-</dl>
-</anchor>
+</man_description>
+</function>
 
 <hr noshade size=1>
+
+</module>
 </section>
 </chapter>