diff --git a/src/modules/Image/Makefile b/src/modules/Image/Makefile
index 25602485f7ea723ff13b8d301700a1cbb2e8dcca..e62c744ca41868dc2e8aee465e9ad3d0038531c5 100644
--- a/src/modules/Image/Makefile
+++ b/src/modules/Image/Makefile
@@ -19,7 +19,7 @@ doc:	$(DOCFILES) mkdoc.pike Makefile
 	$(pike) mkdoc.pike $(DOCFILES)
 
 $(WMMLDOCPLACE): $(DOCFILES) mkwmml.pike Makefile
-	$(pike) mkwmml.pike $(DOCFILES) >$(WMMLDOCPLACE)
+	$(pike) mkwmml.pike --nonverbose $(DOCFILES) >$(WMMLDOCPLACE)
 
 wmml:	$(WMMLDOCPLACE)
 
diff --git a/src/modules/Image/mkwmml.pike b/src/modules/Image/mkwmml.pike
index f4e8b5da1bd11a285820ba6602f7e5431e66169c..e3bc5908a67a08c9a911fa4233d8fe9bf9acf178 100644
--- a/src/modules/Image/mkwmml.pike
+++ b/src/modules/Image/mkwmml.pike
@@ -1,4 +1,4 @@
-/* $Id: mkwmml.pike,v 1.5 1997/11/11 22:17:50 mirar Exp $ */
+/* $Id: mkwmml.pike,v 1.6 1997/12/06 22:09:33 mirar Exp $ */
 
 import Stdio;
 import Array;
@@ -6,6 +6,17 @@ import Array;
 mapping parse=([]);
 int illustration_counter;
 
+mapping manpage_suffix=
+([
+   "Image":"I",
+   "Image.image":"i",
+   "Image.colortable":"c",
+   "Image.font":"f",
+]);
+
+
+function verbose=werror;
+
 #define error(X) throw( ({ (X), backtrace()[0..sizeof(backtrace())-2] }) )
 
 /*
@@ -61,7 +72,7 @@ mapping lower_nowM()
 
 void report(string s)
 {
-   stderr->write(s+"\n");
+   verbose("mkwmml:   "+s+"\n");
 }
 
 #define complain(X) (X)
@@ -258,7 +269,9 @@ string addprefix(string suffix,string prefix)
    return prefix+suffix;
 }
 
-void document(mapping huh,string name,string prefix,object f)
+void document(string enttype,
+	      mapping huh,string name,string prefix,
+	      object f)
 {
    string *names;
 
@@ -267,45 +280,35 @@ void document(mapping huh,string name,string prefix,object f)
    else
       names=({name});
 
-   werror(name+" : "+names*","+"\n");
-
-// ANCHOR
-
-   f->write("<hr newpage>\n");
-   
-   foreach (names,string n)
-      f->write("<anchor name="+linkify(n)+">\n");
+   verbose("mkwmml: "+name+" : "+names*","+"\n");
 
-   f->write("<dl>\n");
+   f->write("\n<"+enttype+" name="+
+	    replace(names*",", ">", "&gt;"));
 
-// NAME
+   if (manpage_suffix[replace(name,"->",".")])
+      f->write(" mansuffix="+manpage_suffix[replace(name,"->",".")]);
 
-   f->write("<dt><encaps>NAME</encaps><dd>\n");
-
-   foreach (nice_order(names),n)
-      f->write("\t<tt>"+n+"</tt><br>\n");
-
-   f->write("<p>\n");
+   f->write(">\n");
 
 // [SYNTAX]
 
    if (huh->decl)
    {
-      f->write("<dt><encaps>SYNTAX</encaps><dd>\n");
+      f->write("<man_syntax>\n");
 
       f->write(replace(htmlify(map(huh->decl,synopsis_to_html)*
 			       "<br>\n"),"\n","\n\t")+"\n");
 
-      f->write("<p>\n\n");
+      f->write("</man_syntax>\n\n");
    }
 
 // [DESCRIPTION]
 
    if (huh->desc)
    {
-      f->write("<dt><encaps>DESCRIPTION</encaps><dd>\n");
+      f->write("<man_description>\n");
       f->write(fixdesc(huh->desc,prefix,huh->_line)+"\n");
-      f->write("<p>\n\n");
+      f->write("</man_description>\n\n");
    }
 
 // [ARGUMENTS]
@@ -313,45 +316,40 @@ void document(mapping huh,string name,string prefix,object f)
    if (huh->args)
    {
       string rarg="";
-      f->write("<dt><encaps>ARGUMENTS</encaps><dd>\n");
+      f->write("<man_arguments>\n");
       
-      f->write("\t<table border=1 cellspacing=0><tr>\n"
-	       "\t<td align=left><font size=-2>argument(s)</font></td>"
-	       "\t<td align=left><font size=-2>description</font></td>"
-	       "</tr>\n\n");
-
       foreach (huh->args,mapping arg)
       {
 	 if (arg->desc)
 	 {
-	    f->write("\t<tr align=left><td valign=top>\n"
-		     +fixdesc(rarg+"\t\t<tt>"
-			      +arg->args*"</tt><br>\n\t\t<tt>"
-			      +"</tt></td>\n",prefix,arg->_line)
-		     +"\t<td valign=bottom>"
+	    f->write("\t<aargdesc>\n"
+		     +fixdesc(rarg+"\t\t<aarg>"
+			      +arg->args*"</aarg>\n\t\t<aarg>"
+			      +"</aarg>",prefix,arg->_line)
+		     +"\n\t\t<adesc>"
 		     +fixdesc(arg->desc,prefix,arg->_line)
-		     +"</td></tr>\n\n");
+		     +"</adesc></aargdesc>\n\n");
 	    rarg="";
 	 }
 	 else
 	 {
-	    rarg+="\t\t<tt>"
-	       +arg->args*"</tt><br>\n\t\t<tt>"+
-	       "</tt><br>\n";
+	    rarg+="\t\t<aarg>"
+	       +arg->args*"</aarg>\n\t\t<aarg>"+
+	       "</aarg>\n";
 	 }
       }
       if (rarg!="") error("trailing args w/o desc on "+arg->_line+"\n");
 
-      f->write("</table><p>\n\n");
+      f->write("</man_arguments>\n\n");
    }
 
 // [RETURN VALUE]
 
    if (huh->returns)
    {
-      f->write("<dt><encaps>RETURN VALUE</encaps><dd>\n");
+      f->write("<man_returns>\n");
       f->write(fixdesc(huh->returns,prefix,huh->_line)+"\n");
-      f->write("<p>\n\n");
+      f->write("</man_returns>\n\n");
    }
 
 
@@ -359,23 +357,20 @@ void document(mapping huh,string name,string prefix,object f)
 
    if (huh->note && huh->note->desc)
    {
-      f->write("<dt><encaps>NOTA BENE</encaps><dd>\n");
+      f->write("<man_note>\n");
       f->write(fixdesc(huh->note->desc,prefix,huh->_line)+"\n");
-      f->write("<p>\n\n");
+      f->write("</man_note>\n\n");
    }
 
 // [SEE ALSO]
 
    if (huh["see also"])
    {
-      f->write("<dt><encaps>SEE ALSO</encaps><dd>\n");
-      f->write(map(huh["see also"],
-		    make_nice_reference,prefix)*",\n     "+"\n");
-      f->write("<p>\n\n");
+      f->write("<man_see exp>\n");
+      f->write(huh["see also"]*", ");
+      f->write("</man_see>\n\n");
    }
 
-   f->write("</dl>\n\n");
-
 // ---childs----
 
    if (huh->methods)
@@ -401,7 +396,7 @@ void document(mapping huh,string name,string prefix,object f)
 	    foreach (huh->methods,method)
 	       if ( method->names[method_name] )
 	       {
-		  document(method,prefix,prefix,f);
+		  document("method",method,prefix,prefix,f);
 		  method_names-=method->names;
 	       }
 	    if (method_names[method_name])
@@ -414,7 +409,7 @@ void document(mapping huh,string name,string prefix,object f)
       foreach(nice_order(indices(huh->classes)),string n)
       {
 	 f->write("\n\n\n<section title=\""+prefix+n+"\">\n");
-	 document(huh->classes[n],
+	 document("class",huh->classes[n],
 		  prefix+n,prefix+n+"->",f);
 	 f->write("</section title=\""+prefix+n+"\">\n");
       }
@@ -425,16 +420,14 @@ void document(mapping huh,string name,string prefix,object f)
       foreach(nice_order(indices(huh->modules)),string n)
       {
 	 f->write("\n\n\n<section title=\""+prefix+n+"\">\n");
-	 document(huh->modules[n],
+	 document("module",huh->modules[n],
 		  prefix+n,prefix+n+".",f);
 	 f->write("</section title=\""+prefix+n+"\">\n");
       }
    }
 // end ANCHOR
 
-   foreach (names,string n)
-      f->write("</anchor name="+linkify(n)+">\n");
-   f->write("\n\n\n");
+   f->write("</"+enttype+">\n\n");
 }
 
 void make_doc_files()
@@ -442,7 +435,7 @@ void make_doc_files()
    stderr->write("modules: "+sort(indices(parse))*", "+"\n");
    
    foreach (sort(indices(parse)),string module)
-      document(parse[module],module,module+".",stdout);
+      document("module",parse[module],module,module+".",stdout);
 }
 
 int main(int ac,string *files)
@@ -460,6 +453,11 @@ int main(int ac,string *files)
 
    files=files[1..];
 
+   if (sizeof(files) && files[0]=="--nonverbose") 
+      files=files[1..],verbose=lambda(){};
+   
+   stderr->write("mkwmml: reading files...\n");
+
    for (;;)
    {
       int i;
@@ -467,7 +465,7 @@ int main(int ac,string *files)
       if (!f) 
       {
 	 if (!sizeof(files)) break;
-	 stderr->write("reading "+files[0]+"...\n");
+	 verbose("mkwmml: reading "+files[0]+"...\n");
 	 f=File();
 	 currentfile=files[0];
 	 files=files[1..];
@@ -498,7 +496,8 @@ int main(int ac,string *files)
 	    string err;
 	    if ( (err=keywords[kw](arg,currentfile+" line "+line)) )
 	    {
-	       stderr->write(currentfile+" line "+line+": "+err+"\n");
+	       stderr->write("mkwmml: "+
+			     currentfile+" line "+line+": "+err+"\n");
 	       return 1;
 	    }
 	 }
@@ -508,7 +507,9 @@ int main(int ac,string *files)
 	    if (!descM) descM=methodM;
 	    if (!descM)
 	    {
-	       stderr->write("Error on line "+line+": illegal description position\n");
+	       stderr->write("mkwmml: "
+			     "Error on line "+line+
+			     ": illegal description position\n");
 	       return 1;
 	    }
 	    if (!descM->desc) descM->desc="";
@@ -521,7 +522,7 @@ int main(int ac,string *files)
 
 //   stderr->write(sprintf("%O",parse));
 
-   stderr->write("making docs...\n\n");
+   stderr->write("mkwmml: making docs...\n\n");
 
    make_doc_files();