diff --git a/doc/html/Ada95.html b/doc/html/Ada95.html
index 043b9de..77557e7 100644
--- a/doc/html/Ada95.html
+++ b/doc/html/Ada95.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
 <!--
-  $Id: Ada95.html,v 1.6 2004/01/18 00:32:47 tom Exp $
+  $Id: Ada95.html,v 1.14 2013/05/18 21:34:34 tom Exp $
   ****************************************************************************
-  * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -28,156 +27,317 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: clear.1,v 1.3 2000/07/15 23:59:35 china Exp @
 -->
-<HTML>
-<HEAD>
-<TITLE>Ada95 Binding for ncurses</Title>
-</HEAD>
-<BODY>
-<H1>Ada95 Binding for ncurses</H1>
-by J&uuml;rgen Pfeifer.
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 
-<HR SIZE=3 NOSHADE>
-<H2>General Remarks</H2>
-<UL>
-<LI>This document describes Version 01.00 of the binding.</LI>
-<LI>The functionality is modeled to be compatible with the ncurses
-package, a clone of the SVr4 curses model.<BR>
-I did the development on an Intel box running the latest stable release of
-<A HREF="http://www.linux.org">Linux</A>, ncurses and the most recent released
-<A HREF="http://www.gnat.com">GNU Ada Translator</A>
-gnat versions. For any older versions of ncurses and gnat
-it is not guaranteed to work.</LI>
-<LI>You must have the m4 macroprocessor to build this package.
-If you don't have this program, you can get the FSF version
-<A HREF="ftp://ftp.gnu.org/pub/gnu/">here</A>.</LI>
-<LI>Ada programs are supposed to be readable. One of my
-favorite methods to make code readable is to use expressive
-names for the identifiers. You can find a list of a mapping
-of the cryptic curses names to the Ada names in this <A HREF="ada/table.html">table</A>.</LI>
-<LI>This is not a typical one-to-one interface mapping. It is
-close to one-to-one on the functional level. Each (n)curses function
-has it's counterpart with a more or less similar formal parameter list
-in the binding. It is not one-to-one with respect to the datatypes.
-I tried to make records out of the flat chtype and similar structures,
-so you don't have to do bit operations to mark an attributed character
-as bold. Just make the boolean member <STRONG>bold</STRONG> of the record
-true. The binding also hides the structures like WINDOW, PANEL, MENU, FORM
-etc. ! It's a pure functional API.</LI>
-<LI>I try to do as much error checking as possible and feasible
-in the binding. I will raise an Ada exception when something
-went wrong in the low-level curses. This has the effect that - at least
-first time in my life - (n)curses programs have now a very rigid error
-checking, but - thanks to Ada - you don't have to code the orgiastic
-error checking style of C.</LI>
-<LI>Support for wide characters is currently not in the binding, as it
-is not really in ncurses at this point in time.</LI>
-</UL>
+<html>
+<head>
+  <meta name="generator" content=
+  "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
 
-<H2>Limitations</H2>
-<UL>
-<LI>I provide no SCREEN datatype and functions to set a new screen.
-If you need this (mostly for debugging I guess), write a small
-C routine doing all this and import it into your Ada program.</LI>
-<LI>I provide no functions to switch on/off curses tracing options.
-Same suggestion as above.</LI>
-<LI>Although Ada95 is an OO Language, this binding doesn't provide
-an OO abstraction of the (n)curses functionality. As mentioned above
-it's a thin binding for the (n)curses functions. But without any
-doubt it would be nice to build on top of this an OO abstraction
-of (n)curses functionality.<BR>
-The only exception is the method how fieldtypes are represented in
-this Binding. We provide an abstract tagged type Field_Type from
-which the various fieldtypes are derived.</LI>
-<LI>I currently do not support the link_fieldtype functionality of the
-forms subsystem.</LI>
-<LI>The *_IO packages are currently output only.</LI>
-</UL>
+  <title>Ada95 Binding for ncurses</title>
+  <link rev="made" href="mailto:bug-ncurses@gnu.org">
+  <meta http-equiv="Content-Type" content=
+  "text/html; charset=us-ascii">
+</head>
 
-<H2>Hierarchy of packages</H2>
-<UL>
-<LI><A HREF="ada/terminal_interface__ads.htm">Terminal_Interface</A>
-    <UL><LI><A HREF="ada/terminal_interface-curses__ads.htm">Curses</A>
-	<UL><LI><A HREF="ada/terminal_interface-curses-mouse__ads.htm">Mouse</A>
-            <LI><A HREF="ada/terminal_interface-curses-panels__ads.htm">Panels</A>
-            <UL><LI><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm">User_Data</A>
-            </UL>
-	    <LI><A HREF="ada/terminal_interface-curses-menus__ads.htm">Menus</A>
-	        <UL><LI><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm">Menu_User_Data</A>
-		    <LI><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm">Item_User_Data</A>
-		</UL>
-	    <LI><A HREF="ada/terminal_interface-curses-forms__ads.htm">Forms</A>
-		<UL><LI><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm">Form_User_Data</A>
-		    <LI><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm">Field_User_Data</A>
-		    <LI><A HREF="ada/terminal_interface-curses-forms-field_types__ads.htm">Field_Types</A>
-		    <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-alpha__ads.htm">Alpha</A>
-		        <LI><A HREF="ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm">AlphaNumeric</A>
-		        <LI><A HREF="ada/terminal_interface-curses-forms-field_types-intfield__ads.htm">IntField</A>
-		        <LI><A HREF="ada/terminal_interface-curses-forms-field_types-numeric__ads.htm">Numeric</A>
-		        <LI><A HREF="ada/terminal_interface-curses-forms-field_types-regexp__ads.htm">RegExp</A>
-		        <LI><A HREF="ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm">IPV4_Address</A>
-		        <LI><A HREF="ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm">Enumeration</A>
-		        <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm">Ada</A>
-			</UL>
-			<LI><A HREF="ada/terminal_interface-curses-forms-field_types-user__ads.htm">User</A>
-		        <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm">Choice</A>
-                        </UL>
-                     </UL>
-		</UL>
-	    <LI><A HREF="ada/terminal_interface-curses-text_io__ads.htm">Text_IO</A>
-		<UL><LI><A HREF="ada/terminal_interface-curses-text_io-integer_io__ads.htm">Integer_IO</A>
-		    <LI><A HREF="ada/terminal_interface-curses-text_io-float_io__ads.htm">Float_IO</A>
-		    <LI><A HREF="ada/terminal_interface-curses-text_io-fixed_io__ads.htm">Fixed_IO</A>
-		    <LI><A HREF="ada/terminal_interface-curses-text_io-decimal_io__ads.htm">Decimal_IO</A>
-		    <LI><A HREF="ada/terminal_interface-curses-text_io-modular_io__ads.htm">Modular_IO</A>
-		    <LI><A HREF="ada/terminal_interface-curses-text_io-enumeration_io__ads.htm">Enumeration_IO</A>
-		    <LI><A HREF="ada/terminal_interface-curses-text_io-complex_io__ads.htm">Complex_IO</A>
-		</UL>
-         </UL>
-     </UL>
-</UL>
-If you want to navigate through the html pages of the package specs, click <A HREF="ada/index.htm">here</A>.
-<H2>Implementation Details</H2>
-<H4>Behind the abstraction</H4>
-All the new types like <STRONG>Window</STRONG>, <STRONG>Panel</STRONG>,
-<STRONG>Menu</STRONG>, <STRONG>Form</STRONG> etc. are just
-opaque representations of the pointers to the corresponding
-low level (n)curses structures like
-<STRONG>WINDOW *</STRONG>, <STRONG>PANEL *</STRONG>,
-<STRONG>MENU *</STRONG> or <STRONG>FORM *</STRONG>.
-So you can safely pass them to C routines that expect a pointer
-to one of those structures.
-<H4>Extended ripoffline() usage</H4>
-The official documentation of (n)curses says, that the line parameter
-determines only whether or not exactly <STRONG>one</STRONG> line is
-stolen from the top or bottom of the screen. So essentially only the
-sign of the parameter is evaluated. ncurses has internally implemented
-it in a way, that uses the line parameter also to control the amount of
-lines to steal. This mechanism is used in the <STRONG>Rip_Off_Lines</STRONG>
-routine of the binding.
-<H4><A NAME="userpointer">How user defined field types work</A></H4>
-TBD
-<H4>Enumeration fields handling</H4>
-The (n)curses documentation says, that the String arrays to be passed to
-an TYPE_ENUM fieldtype must not be automatic variables. This is not true
-in this binding, because it is internally arranged to safely copy these
-values.
-<H4><A NAME="compiler">Using other Ada compilers</A></H4>
-This should basically not be a problem.
-<H4>Port to other curses implementations</H4>
-Basically it should not be too hard to make all this run on a regular SVr4
-implementation of curses. The problems are probably these:<BR>
-<UL>
-<LI>ncurses has some additional features which are presented in this binding. You
-have two choices to deal with this:
-<UL>
-<LI>Emulate the feature in this binding</LI>
-<LI>Raise an exception for non implemented features</LI>
-</UL>
-Most likely you will follow a mixed approach. Some features are easy to simulate,
-others will be hard if not impossible.</LI>
-</UL>
-I'm quite sure I forgot something.
-</BODY>
-</HTML>
+<body>
+  <h1>Ada95 Binding for ncurses</h1>
+
+  <p>by J&uuml;rgen Pfeifer.</p>
+  <hr>
+
+  <h2>General Remarks</h2>
+
+  <ul>
+    <li>This document describes Version 01.00 of the binding.</li>
+
+    <li>The functionality is modeled to be compatible with the
+    ncurses package, a clone of the SVr4 curses model.<br>
+    I did the development on an Intel box running the latest stable
+    release of <a href="http://www.linux.org">Linux</a>, ncurses
+    and the most recent released <a href="http://www.gnat.com">GNU
+    Ada Translator</a> gnat versions. For any older versions of
+    ncurses and gnat it is not guaranteed to work.</li>
+
+    <li>You must have the m4 macroprocessor to build this package.
+    If you don't have this program, you can get the FSF version
+    <a href="ftp://ftp.gnu.org/pub/gnu/">here</a>.</li>
+
+    <li>Ada programs are supposed to be readable. One of my
+    favorite methods to make code readable is to use expressive
+    names for the identifiers. You can find a list of a mapping of
+    the cryptic curses names to the Ada names in this <a href=
+    "ada/table.html">table</a>.</li>
+
+    <li>This is not a typical one-to-one interface mapping. It is
+    close to one-to-one on the functional level. Each (n)curses
+    function has it's counterpart with a more or less similar
+    formal parameter list in the binding. It is not one-to-one with
+    respect to the datatypes. I tried to make records out of the
+    flat chtype and similar structures, so you don't have to do bit
+    operations to mark an attributed character as bold. Just make
+    the boolean member <strong>bold</strong> of the record true.
+    The binding also hides the structures like WINDOW, PANEL, MENU,
+    FORM etc. ! It's a pure functional API.</li>
+
+    <li>I try to do as much error checking as possible and feasible
+    in the binding. I will raise an Ada exception when something
+    went wrong in the low-level curses. This has the effect that -
+    at least first time in my life - (n)curses programs have now a
+    very rigid error checking, but - thanks to Ada - you don't have
+    to code the orgiastic error checking style of C.</li>
+
+    <li>Support for wide characters is currently not in the
+    binding, as it is not really in ncurses at this point in
+    time.</li>
+  </ul>
+
+  <h2>Limitations</h2>
+
+  <ul>
+    <li>I provide no SCREEN datatype and functions to set a new
+    screen. If you need this (mostly for debugging I guess), write
+    a small C routine doing all this and import it into your Ada
+    program.</li>
+
+    <li>I provide no functions to switch on/off curses tracing
+    options. Same suggestion as above.</li>
+
+    <li>Although Ada95 is an OO Language, this binding doesn't
+    provide an OO abstraction of the (n)curses functionality. As
+    mentioned above it's a thin binding for the (n)curses
+    functions. But without any doubt it would be nice to build on
+    top of this an OO abstraction of (n)curses functionality.<br>
+    The only exception is the method how fieldtypes are represented
+    in this Binding. We provide an abstract tagged type Field_Type
+    from which the various fieldtypes are derived.</li>
+
+    <li>I currently do not support the link_fieldtype functionality
+    of the forms subsystem.</li>
+
+    <li>The *_IO packages are currently output only.</li>
+  </ul>
+
+  <h2>Hierarchy of packages</h2>
+
+  <ul>
+    <li>
+      <a href=
+      "ada/terminal_interface__ads.htm">Terminal_Interface</a>
+
+      <ul>
+        <li>
+          <a href=
+          "ada/terminal_interface-curses__ads.htm">Curses</a>
+
+          <ul>
+            <li><a href=
+            "ada/terminal_interface-curses-mouse__ads.htm">Mouse</a></li>
+
+            <li>
+              <a href=
+              "ada/terminal_interface-curses-panels__ads.htm">Panels</a>
+
+              <ul>
+                <li><a href=
+                "ada/terminal_interface-curses-panels-user_data__ads.htm">
+                User_Data</a></li>
+              </ul>
+            </li>
+
+            <li>
+              <a href=
+              "ada/terminal_interface-curses-menus__ads.htm">Menus</a>
+
+              <ul>
+                <li><a href=
+                "ada/terminal_interface-curses-menus-menu_user_data__ads.htm">
+                Menu_User_Data</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-menus-item_user_data__ads.htm">
+                Item_User_Data</a></li>
+              </ul>
+            </li>
+
+            <li>
+              <a href=
+              "ada/terminal_interface-curses-forms__ads.htm">Forms</a>
+
+              <ul>
+                <li><a href=
+                "ada/terminal_interface-curses-forms-form_user_data__ads.htm">
+                Form_User_Data</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-forms-field_user_data__ads.htm">
+                Field_User_Data</a></li>
+
+                <li>
+                  <a href=
+                  "ada/terminal_interface-curses-forms-field_types__ads.htm">
+                  Field_Types</a>
+
+                  <ul>
+                    <li><a href=
+                    "ada/terminal_interface-curses-forms-field_types-alpha__ads.htm">
+                    Alpha</a></li>
+
+                    <li><a href=
+                    "ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm">
+                    AlphaNumeric</a></li>
+
+                    <li><a href=
+                    "ada/terminal_interface-curses-forms-field_types-intfield__ads.htm">
+                    IntField</a></li>
+
+                    <li><a href=
+                    "ada/terminal_interface-curses-forms-field_types-numeric__ads.htm">
+                    Numeric</a></li>
+
+                    <li><a href=
+                    "ada/terminal_interface-curses-forms-field_types-regexp__ads.htm">
+                    RegExp</a></li>
+
+                    <li><a href=
+                    "ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm">
+                    IPV4_Address</a></li>
+
+                    <li>
+                      <a href=
+                      "ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm">
+                      Enumeration</a>
+
+                      <ul>
+                        <li><a href=
+                        "ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm">
+                        Ada</a></li>
+                      </ul>
+                    </li>
+
+                    <li>
+                      <a href=
+                      "ada/terminal_interface-curses-forms-field_types-user__ads.htm">
+                      User</a>
+
+                      <ul>
+                        <li><a href=
+                        "ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm">
+                        Choice</a></li>
+                      </ul>
+                    </li>
+                  </ul>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href=
+              "ada/terminal_interface-curses-text_io__ads.htm">Text_IO</a>
+
+              <ul>
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-integer_io__ads.htm">
+                Integer_IO</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-float_io__ads.htm">
+                Float_IO</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-fixed_io__ads.htm">
+                Fixed_IO</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-decimal_io__ads.htm">
+                Decimal_IO</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-modular_io__ads.htm">
+                Modular_IO</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-enumeration_io__ads.htm">
+                Enumeration_IO</a></li>
+
+                <li><a href=
+                "ada/terminal_interface-curses-text_io-complex_io__ads.htm">
+                Complex_IO</a></li>
+              </ul>
+            </li>
+          </ul>
+        </li>
+      </ul>
+    </li>
+  </ul>
+
+  <p>If you want to navigate through the html pages of the package
+  specs, click <a href="ada/index.htm">here</a>.</p>
+
+  <h2>Implementation Details</h2>
+
+  <h4>Behind the abstraction</h4>
+
+  <p>All the new types like <strong>Window</strong>,
+  <strong>Panel</strong>, <strong>Menu</strong>,
+  <strong>Form</strong> etc. are just opaque representations of the
+  pointers to the corresponding low level (n)curses structures like
+  <strong>WINDOW *</strong>, <strong>PANEL *</strong>, <strong>MENU
+  *</strong> or <strong>FORM *</strong>. So you can safely pass
+  them to C routines that expect a pointer to one of those
+  structures.</p>
+
+  <h4>Extended ripoffline() usage</h4>
+
+  <p>The official documentation of (n)curses says, that the line
+  parameter determines only whether or not exactly
+  <strong>one</strong> line is stolen from the top or bottom of the
+  screen. So essentially only the sign of the parameter is
+  evaluated. ncurses has internally implemented it in a way, that
+  uses the line parameter also to control the amount of lines to
+  steal. This mechanism is used in the
+  <strong>Rip_Off_Lines</strong> routine of the binding.</p>
+
+  <h4><a name="userpointer" id="userpointer">How user defined field
+  types work</a></h4>
+
+  <p>TBD</p>
+
+  <h4>Enumeration fields handling</h4>
+
+  <p>The (n)curses documentation says, that the String arrays to be
+  passed to an TYPE_ENUM fieldtype must not be automatic variables.
+  This is not true in this binding, because it is internally
+  arranged to safely copy these values.</p>
+
+  <h4><a name="compiler" id="compiler">Using other Ada
+  compilers</a></h4>
+
+  <p>This should basically not be a problem.</p>
+
+  <h4>Port to other curses implementations</h4>
+
+  <p>Basically it should not be too hard to make all this run on a
+  regular SVr4 implementation of curses. The problems are probably
+  these:<br></p>
+
+  <ul>
+    <li>ncurses has some additional features which are presented in
+    this binding. You have two choices to deal with this:
+
+      <ul>
+        <li>Emulate the feature in this binding</li>
+
+        <li>Raise an exception for non implemented features</li>
+      </ul>
+
+      <p>Most likely you will follow a mixed approach. Some
+      features are easy to simulate, others will be hard if not
+      impossible.</p>
+    </li>
+  </ul>
+
+  <p>I'm quite sure I forgot something.</p>
+</body>
+</html>
