From 3c1250527d43864c309cbf0dd2f9356042124d21 Mon Sep 17 00:00:00 2001
From: Dirk Baechle <dl9obn@darc.de>
Date: Sat, 4 May 2013 00:18:52 +0200
Subject: - switched all docs to SCons XSD

---
 bin/SConsDoc.py                 | 199 ++++++++++---------
 bin/docs-update-generated.py    |   4 +-
 bin/docs-validate.py            |  10 +-
 bin/scons-proc.py               |   2 +-
 doc/design/MANIFEST             |   2 +-
 doc/design/acks.xml             |  16 +-
 doc/design/bground.xml          |  16 +-
 doc/design/copyright.xml        |  14 +-
 doc/design/engine.xml           |  20 +-
 doc/design/goals.xml            |  16 +-
 doc/design/install.xml          |  20 +-
 doc/design/intro.xml            |  16 +-
 doc/design/issues.xml           |  16 +-
 doc/design/main.xml             | 110 ++---------
 doc/design/native.xml           |  16 +-
 doc/design/overview.xml         |  16 +-
 doc/design/scons.mod            | 429 ----------------------------------------
 doc/design/summary.xml          |  53 +++++
 doc/developer/architecture.xml  |  14 ++
 doc/developer/branches.xml      |  14 ++
 doc/developer/copyright.xml     |  12 ++
 doc/developer/cycle.xml         |  14 ++
 doc/developer/main.xml          |  68 ++-----
 doc/developer/packaging.xml     |  14 ++
 doc/developer/preface.xml       |  14 ++
 doc/developer/sourcetree.xml    |  14 ++
 doc/developer/testing.xml       |  14 ++
 doc/man/scons.xml               | 318 ++++++++++++++---------------
 doc/python10/MANIFEST           |   3 +-
 doc/python10/abstract.xml       |  37 ++++
 doc/python10/acks.xml           |  39 ++++
 doc/python10/arch.eps           | 134 -------------
 doc/python10/arch.svg           | 124 ++++++++++++
 doc/python10/builder.eps        | 325 ------------------------------
 doc/python10/copyright.xml      |  14 +-
 doc/python10/design.xml         |  99 +++++-----
 doc/python10/future.xml         |  39 ++++
 doc/python10/install.xml        |  39 ++++
 doc/python10/intro.xml          |  39 ++++
 doc/python10/job-task.eps       | 238 ----------------------
 doc/python10/job-task.svg       | 244 +++++++++++++++++++++++
 doc/python10/main.xml           |  85 ++------
 doc/python10/node.eps           | 351 --------------------------------
 doc/python10/node.svg           | 414 ++++++++++++++++++++++++++++++++++++++
 doc/python10/process.xml        |  39 ++++
 doc/python10/scanner.eps        | 168 ----------------
 doc/python10/scanner.svg        | 160 +++++++++++++++
 doc/python10/scons.mod          | 428 ---------------------------------------
 doc/python10/sig.eps            | 147 --------------
 doc/python10/sig.svg            | 124 ++++++++++++
 doc/python10/summary.xml        |  52 +++++
 doc/reference/Alias.xml         |  16 +-
 doc/reference/CFile.xml         |  16 +-
 doc/reference/CXXFile.xml       |  16 +-
 doc/reference/Command.xml       |  16 +-
 doc/reference/Install.xml       |  16 +-
 doc/reference/InstallAs.xml     |  16 +-
 doc/reference/Library.xml       |  16 +-
 doc/reference/Object.xml        |  16 +-
 doc/reference/PCH.xml           |  16 +-
 doc/reference/PDF.xml           |  16 +-
 doc/reference/PostScript.xml    |  16 +-
 doc/reference/Program.xml       |  16 +-
 doc/reference/RES.xml           |  16 +-
 doc/reference/SharedLibrary.xml |  16 +-
 doc/reference/SharedObject.xml  |  16 +-
 doc/reference/StaticLibrary.xml |  16 +-
 doc/reference/StaticObject.xml  |  16 +-
 doc/reference/copyright.xml     |  14 +-
 doc/reference/errors.xml        |  16 +-
 doc/reference/main.xml          | 189 +++++-------------
 doc/reference/preface.xml       |  16 +-
 doc/scons.mod                   |   1 +
 doc/user/builders-built-in.xml  |   2 +-
 74 files changed, 2418 insertions(+), 2905 deletions(-)
 delete mode 100644 doc/design/scons.mod
 create mode 100644 doc/design/summary.xml
 delete mode 100644 doc/python10/arch.eps
 create mode 100644 doc/python10/arch.svg
 delete mode 100644 doc/python10/builder.eps
 delete mode 100644 doc/python10/job-task.eps
 create mode 100644 doc/python10/job-task.svg
 delete mode 100644 doc/python10/node.eps
 create mode 100644 doc/python10/node.svg
 delete mode 100644 doc/python10/scanner.eps
 create mode 100644 doc/python10/scanner.svg
 delete mode 100644 doc/python10/scons.mod
 delete mode 100644 doc/python10/sig.eps
 create mode 100644 doc/python10/sig.svg
 create mode 100644 doc/python10/summary.xml

diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py
index c6d4785..7cd06f8 100644
--- a/bin/SConsDoc.py
+++ b/bin/SConsDoc.py
@@ -115,38 +115,43 @@ import sys
 
 # Do we have libxml2/libxslt/lxml?
 has_libxml2 = True
-has_lxml = True
 try:
     import libxml2
     import libxslt
 except:
     has_libxml2 = False
-try:
-    import lxml
-except:
-    has_lxml = False
+    try:
+        import lxml
+    except:
+        print("Failed to import either libxml2/libxslt or lxml")
+        sys.exit(1)
 
-try:
-  from lxml import etree
-except ImportError:
-  try:
-    # Python 2.5
-    import xml.etree.cElementTree as etree
-  except ImportError:
+has_etree = False
+if not has_libxml2:
     try:
-      # Python 2.5
-      import xml.etree.ElementTree as etree
+        from lxml import etree
+        has_etree = True
+    except ImportError:
+        pass
+if not has_etree:
+    try:
+        # Python 2.5
+        import xml.etree.cElementTree as etree
     except ImportError:
-      try:
-        # normal cElementTree install
-        import cElementTree as etree
-      except ImportError:
         try:
-          # normal ElementTree install
-          import elementtree.ElementTree as etree
+            # Python 2.5
+            import xml.etree.ElementTree as etree
         except ImportError:
-          print("Failed to import ElementTree from any known place")
-          sys.exit(1)
+            try:
+                # normal cElementTree install
+                import cElementTree as etree
+            except ImportError:
+                try:
+                    # normal ElementTree install
+                    import elementtree.ElementTree as etree
+                except ImportError:
+                    print("Failed to import ElementTree from any known place")
+                    sys.exit(1)
 
 re_entity = re.compile("\&([^;]+);")
 re_entity_header = re.compile("<!DOCTYPE\s+sconsdoc\s+[^\]]+\]>")
@@ -168,6 +173,21 @@ generated_comment = """
     THIS IS AN AUTOMATICALLY-GENERATED FILE.  DO NOT EDIT.
   """
 
+def isSConsXml(fpath):
+    """ Check whether the given file is a SCons XML file, i.e. it
+        contains the default target namespace definition.
+    """
+    try:
+        f = open(fpath,'r')
+        content = f.read()
+        f.close()
+        if content.find(dbxsd) >= 0:
+            return True
+    except:
+        pass
+    
+    return False 
+
 def xml_tree(root, comment=generated_comment):
     """ Return a XML file tree with the correct namespaces set,
         the element root as top entry and the given header comment.
@@ -182,8 +202,6 @@ def xml_tree(root, comment=generated_comment):
     c = etree.Comment(comment)
     t.append(c)
 
-    # print etree.tostring(t, xml_declaration=True, encoding="UTF-8", pretty_print=True)
-
     return t
 
 def remove_entities(content):
@@ -196,75 +214,73 @@ def remove_entities(content):
 
 default_xsd = os.path.join('doc','xsd','scons.xsd')
 
+ARG = "dbscons"
+
+class Libxml2ValidityHandler:
+    
+    def __init__(self):
+        self.errors = []
+        self.warnings = []
+        
+    def error(self, msg, data):
+        if data != ARG:
+            raise Exception, "Error handler did not receive correct argument"
+        self.errors.append(msg)
+
+    def warning(self, msg, data):
+        if data != ARG:
+            raise Exception, "Warning handler did not receive correct argument"
+        self.warnings.append(msg)
+
 def validate_xml(fpath, xmlschema_context):
     if not has_libxml2:
-        # At the moment we prefer libxml2 over lxml, the latter can lead
-        # to conflicts when installed together with libxml2.
-        if has_lxml:
-            # Use lxml
-            xmlschema = etree.XMLSchema(xmlschema_context)
-            doc = etree.parse(fpath)
-            try:
-                xmlschema.assertValid(doc)
-            except:
-                return False
-            return True
-        else:
-            # Try xmllint as a last fallback
-            try:
-                import subprocess
-                p = subprocess.Popen(['xmllint','--noout','--noent','--schema',default_xsd,fpath],
-                                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-                sout, serr = p.communicate()
-                if serr and not 'validates' in serr:
-                    print serr
-                    return False
-                
-                return True
-                
-            except:
-                print "Can't validate %s! Neither lxml/libxml2, nor xmllint found." % fpath
-                return False
-
+        # Use lxml
+        xmlschema = etree.XMLSchema(xmlschema_context)
+        doc = etree.parse(fpath)
+        doc.xinclude()
+        try:
+            xmlschema.assertValid(doc)
+        except Exception, e:
+            print e
+            print "%s fails to validate" % fpath
+            return False
+        return True
+
+    # Create validation context
+    validation_context = xmlschema_context.schemaNewValidCtxt()
+    # Set error/warning handlers
+    eh = Libxml2ValidityHandler()
+    validation_context.setValidityErrorHandler(eh.error, eh.warning, ARG)
     # Read file and resolve entities
     doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT)
-    err = xmlschema_context.schemaValidateDoc(doc)
+    doc.xincludeProcessFlags(libxml2.XML_PARSE_NOENT)
+    err = validation_context.schemaValidateDoc(doc)
     # Cleanup
     doc.freeDoc()
-    
-    if err:
-        # TODO: print error message "Haha",err
+    del validation_context
+
+    if err or eh.errors:
+        for e in eh.errors:
+            print e.rstrip("\n")
+        print "%s fails to validate" % fpath
         return False
         
     return True
 
 def prettyprint_xml(fpath):
     if not has_libxml2:
-        # At the moment we prefer libxml2 over lxml, the latter can lead
-        # to conflicts when installed together with libxml2.
-        if has_lxml:
-            # Use lxml
-            fin = open(fpath,'r')
-            tree = etree.parse(fin)
-            pretty_content = etree.tostring(tree, pretty_print=True)
-            fin.close()
-
-            fout = open(fpath,'w')
-            fout.write(pretty_content)
-            fout.close()
-        else:
-            # Use xmllint as a last fallback
-            try:
-                import subprocess
-                p = subprocess.Popen(['xmllint', '-o', fpath, '--format', fpath],
-                                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-                sout, serr = p.communicate()
-            except:
-                print "Can't prettyprint %s! Neither lxml/libxml2, nor xmllint found." % fpath
-                return False
+        # Use lxml
+        fin = open(fpath,'r')
+        tree = etree.parse(fin)
+        pretty_content = etree.tostring(tree, pretty_print=True)
+        fin.close()
+
+        fout = open(fpath,'w')
+        fout.write(pretty_content)
+        fout.close()
 
     # Read file and resolve entities
-    doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT)
+    doc = libxml2.readFile(fpath, None, libxml2d.XML_PARSE_NOENT)
     err = xmlschema_context.schemaValidateDoc(doc)
     # Cleanup
     doc.freeDoc()
@@ -272,27 +288,25 @@ def prettyprint_xml(fpath):
 
 perc="%"
 
-def validate_all_xml(dpath='src', xsdfile=default_xsd):
+def validate_all_xml(dpaths, xsdfile=default_xsd):
     xmlschema_context = None
     if not has_libxml2:
-        # At the moment we prefer libxml2 over lxml, the latter can lead
-        # to conflicts when installed together with libxml2.
-        if has_lxml:
-            # Use lxml
-            xmlschema_context = etree.parse(xsdfile)
+        # Use lxml
+        xmlschema_context = etree.parse(xsdfile)
     else:
         # Use libxml2 and prepare the schema validation context
         ctxt = libxml2.schemaNewParserCtxt(xsdfile)
-        schema = ctxt.schemaParse()
+        xmlschema_context = ctxt.schemaParse()
         del ctxt
-        xmlschema_context = schema.schemaNewValidCtxt()
     
     fpaths = []
-    for path, dirs, files in os.walk(dpath):
-        for f in files:
-            if f.endswith('.xml'):
-                fp = os.path.join(path, f)
-                fpaths.append(fp)
+    for dp in dpaths:
+        for path, dirs, files in os.walk(dp):
+            for f in files:
+                if f.endswith('.xml'):
+                    fp = os.path.join(path, f)
+                    if isSConsXml(fp):
+                        fpaths.append(fp)
                 
     fails = []
     for idx, fp in enumerate(fpaths):
@@ -307,7 +321,6 @@ def validate_all_xml(dpath='src', xsdfile=default_xsd):
     if has_libxml2:
         # Cleanup
         del xmlschema_context
-        del schema
 
     if fails:
         return False
diff --git a/bin/docs-update-generated.py b/bin/docs-update-generated.py
index 2a78b9f..e689903 100644
--- a/bin/docs-update-generated.py
+++ b/bin/docs-update-generated.py
@@ -8,6 +8,7 @@
 #
 
 import os
+import SConsDoc
 
 # Directory where all generated files are stored
 gen_folder = 'doc/generated'
@@ -28,7 +29,8 @@ def generate_all():
         for f in files:
             if f.endswith('.xml'):
                 fpath = os.path.join(path, f)
-                flist.append(fpath)
+                if SConsDoc.isSConsXml(fpath):
+                    flist.append(fpath)
 
     if flist:
         # Does the destination folder exist
diff --git a/bin/docs-validate.py b/bin/docs-validate.py
index 2bc70a9..fc90ee7 100644
--- a/bin/docs-validate.py
+++ b/bin/docs-validate.py
@@ -8,10 +8,18 @@
 # use different XML editors...
 #
 
+import os
 import SConsDoc
 
 if __name__ == "__main__":
-    if SConsDoc.validate_all_xml():
+    if SConsDoc.validate_all_xml(['src',
+                                  os.path.join('doc','design'),
+                                  os.path.join('doc','developer'),
+                                  os.path.join('doc','man'),
+                                  os.path.join('doc','python10'),
+                                  os.path.join('doc','reference'),
+                                  os.path.join('doc','user')
+                                  ]):
         print "OK"
     else:
         print "Validation failed! Please correct the errors above and try again."
diff --git a/bin/scons-proc.py b/bin/scons-proc.py
index e17a339..d6bc1a2 100644
--- a/bin/scons-proc.py
+++ b/bin/scons-proc.py
@@ -360,7 +360,7 @@ os.system('python bin/docs-correct-mod-paths.py')
 
 # Step 3: Validating all input files
 print "Validating files against SCons XSD..."
-if SConsDoc.validate_all_xml():
+if SConsDoc.validate_all_xml(['src']):
     print "OK"
 else:
     print "Validation failed! Please correct the errors above and try again."
diff --git a/doc/design/MANIFEST b/doc/design/MANIFEST
index 33ab8f0..c477ad9 100644
--- a/doc/design/MANIFEST
+++ b/doc/design/MANIFEST
@@ -11,4 +11,4 @@ issues.xml
 main.xml
 native.xml
 overview.xml
-scons.mod
+summary.xml
diff --git a/doc/design/acks.xml b/doc/design/acks.xml
index b1a8a58..b613c7c 100644
--- a/doc/design/acks.xml
+++ b/doc/design/acks.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-acks"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Acknowledgements</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -177,3 +189,5 @@
   </varlistentry>
  </variablelist>
 
+
+</chapter>
diff --git a/doc/design/bground.xml b/doc/design/bground.xml
index c404e86..3a7370e 100644
--- a/doc/design/bground.xml
+++ b/doc/design/bground.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-background"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Background</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -84,3 +96,5 @@
   it would be a teensy bit easier to type.
 
  </para>
+
+</chapter>
diff --git a/doc/design/copyright.xml b/doc/design/copyright.xml
index d73906e..ea8a1a3 100644
--- a/doc/design/copyright.xml
+++ b/doc/design/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -37,3 +47,5 @@
 
  </para>
 </blockquote>
+
+</legalnotice>
diff --git a/doc/design/engine.xml b/doc/design/engine.xml
index afe9877..e5a61d0 100644
--- a/doc/design/engine.xml
+++ b/doc/design/engine.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-engine"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Build Engine API</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -964,7 +976,7 @@ you set it up with another environment...
   <para>
 
    &Builder; objects referenced in the &BUILDERMAP; do not need to be
-   listed separately in the &BUILDERS; variable.  The &consenv; will
+   listed separately in the <literal>BUILDERS</literal> variable.  The &consenv; will
    bind the union of the &Builder; objects listed in both variables.
 
   </para>
@@ -1292,7 +1304,7 @@ Comments?
   <para>
 
    &Scanner; objects referenced in the &SCANNERMAP; do not need to
-   be listed separately in the &SCANNERS; variable.  The &consenv;
+   be listed separately in the <literal>SCANNERS</literal> variable.  The &consenv;
    will bind the union of the &Scanner; objects listed
    in both variables.
 
@@ -1962,3 +1974,5 @@ I need to write that up...
 	</programlisting>
 
 </section>
+
+</chapter>
diff --git a/doc/design/goals.xml b/doc/design/goals.xml
index f2e6b7c..3b7598b 100644
--- a/doc/design/goals.xml
+++ b/doc/design/goals.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-goals"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Goals</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -214,3 +226,5 @@ To be written.
   </para>
 
 </section>
+
+</chapter>
diff --git a/doc/design/install.xml b/doc/design/install.xml
index e670e83..25e4b49 100644
--- a/doc/design/install.xml
+++ b/doc/design/install.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-install"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Installation</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -26,3 +38,9 @@
 <!--
 THIS CHAPTER NEEDS TO BE DISCUSSED AND WRITTEN.
 -->
+
+<para>
+
+</para>
+
+</chapter>
diff --git a/doc/design/intro.xml b/doc/design/intro.xml
index 561baa4..296cc67 100644
--- a/doc/design/intro.xml
+++ b/doc/design/intro.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-intro"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Introduction</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -109,3 +121,5 @@ I'm especially eager to hear it.
 -->
 
 </section>
+
+</chapter>
diff --git a/doc/design/issues.xml b/doc/design/issues.xml
index 1f9a78c..a65a853 100644
--- a/doc/design/issues.xml
+++ b/doc/design/issues.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-issues"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Other Issues</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -193,3 +205,5 @@
    </para>
 
  </section>
+
+</chapter>
diff --git a/doc/design/main.xml b/doc/design/main.xml
index e991b36..b01c498 100644
--- a/doc/design/main.xml
+++ b/doc/design/main.xml
@@ -2,7 +2,7 @@
 
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -25,44 +25,19 @@
 
 -->
 
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
+<!DOCTYPE sconsdoc [
 
-    <!--
-    We haven't updated the design document in ages.
-    Rather than fool people into thinking that it's
-    actually up-to-date and reflects the current design,
-    hard-code the version from back when we last updated it.
     <!ENTITY % version SYSTEM "../version.xml">
     %version;
-    -->
-    <!ENTITY builddate "2001/12/13 20:55:46">
-    <!ENTITY buildversion "0.91">
-    <!ENTITY buildrevision "0.01.D177">
-
-    <!--
-    Also freeze the scons.mod DTD extensions
-    to what they were way back when.
+
     <!ENTITY % scons SYSTEM "../scons.mod">
-    -->
-    <!ENTITY % scons SYSTEM "scons.mod">
     %scons;
 
-    <!ENTITY acks SYSTEM "acks.xml">
-    <!ENTITY bground SYSTEM "bground.xml">
-    <!ENTITY copyright SYSTEM "copyright.xml">
-    <!ENTITY engine SYSTEM "engine.xml">
-    <!ENTITY goals SYSTEM "goals.xml">
-    <!ENTITY install SYSTEM "install.xml">
-    <!ENTITY intro SYSTEM "intro.xml">
-    <!ENTITY issues SYSTEM "issues.xml">
-    <!ENTITY native SYSTEM "native.xml">
-    <!ENTITY overview SYSTEM "overview.xml">
-
 ]>
 
-<book>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
   <bookinfo>
     <title>SCons Design version &buildversion;</title>
 
@@ -80,79 +55,34 @@
       <holder>Steven Knight</holder>
     </copyright>
 
-    <legalnotice>
-      &copyright;
-    </legalnotice>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
 
     <releaseinfo>version &buildversion;</releaseinfo>
 
   </bookinfo>
 
-  <chapter id="chap-intro">
-    <title>Introduction</title>
-    &intro;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intro.xml"/>
 
-  <chapter id="chap-goals">
-    <title>Goals</title>
-    &goals;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="goals.xml"/>
 
-  <chapter id="chap-overview">
-    <title>Overview</title>
-    &overview;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="overview.xml"/>
 
-  <chapter id="chap-engine">
-    <title>Build Engine API</title>
-    &engine;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="engine.xml"/>
 
-  <chapter id="chap-native">
-    <title>Native Python Interface</title>
-    &native;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="native.xml"/>
 
   <!--
 
-  <chapter id="chap-install">
-    <title>Installation</title>
-    &install;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="install.xml"/>
 
   -->
 
-  <chapter id="chap-issues">
-    <title>Other Issues</title>
-    &issues;
-  </chapter>
-
-  <chapter id="chap-background">
-    <title>Background</title>
-    &bground;
-  </chapter>
-
-  <chapter id="chap-summary">
-    <title>Summary</title>
-    <para>
-
-      &SCons; offers a robust and feature-rich design for an SC-build
-      tool.  With a Build Engine based on the proven design of
-      the &Cons; utility, it offers increased simplification of the
-      user interface for unsophisticated users with the addition
-      of the "do-the-right-thing" <function>env.Make</function>
-      method, increased flexibility for sophisticated users with the
-      addition of &Builder; and &Scanner; objects, a mechanism to
-      allow tool-masters (and users) to share working construction
-      environments, and embeddability to provide reliable dependency
-      management in a variety of environments and interfaces.
-
-    </para>
-  </chapter>
-
-  <chapter id="chap-acks">
-    <title>Acknowledgements</title>
-    &acks;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="issues.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bground.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="summary.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acks.xml"/>
 
 </book>
diff --git a/doc/design/native.xml b/doc/design/native.xml
index c665e0c..60be9dd 100644
--- a/doc/design/native.xml
+++ b/doc/design/native.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-native"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Native Python Interface</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -362,3 +374,5 @@ beyond what the man page will have.
   <!-- END HTML -->
 
 </section>
+
+</chapter>
diff --git a/doc/design/overview.xml b/doc/design/overview.xml
index 266c9e8..72bf583 100644
--- a/doc/design/overview.xml
+++ b/doc/design/overview.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-overview"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Overview</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -496,3 +508,5 @@ This is where it will go, anyway...
  </section>
 
 </section>
+
+</chapter>
diff --git a/doc/design/scons.mod b/doc/design/scons.mod
deleted file mode 100644
index 5b246a4..0000000
--- a/doc/design/scons.mod
+++ /dev/null
@@ -1,429 +0,0 @@
-<!--
-
-  __COPYRIGHT__
-
-  An SCons-specific DTD module, for use with SCons DocBook
-  documentation, that contains names, phrases, acronyms, etc. used
-  throughout the SCons documentation.
-
--->
-
-
-
-<!--
-
-  Other applications that we reference.
-
--->
-
-<!ENTITY Aegis "<application>Aegis</application>">
-<!ENTITY Ant "<application>Ant</application>">
-<!ENTITY Autoconf "<application>Autoconf</application>">
-<!ENTITY Automake "<application>Automake</application>">
-<!ENTITY cc "<application>cc</application>">
-<!ENTITY Cons "<application>Cons</application>">
-<!ENTITY cp "<application>cp</application>">
-<!ENTITY csh "<application>csh</application>">
-<!ENTITY gcc "<application>gcc</application>">
-<!ENTITY Jam "<application>Jam</application>">
-<!ENTITY jar "<application>jar</application>">
-<!ENTITY javac "<application>javac</application>">
-<!ENTITY javah "<application>javah</application>">
-<!ENTITY Make "<application>Make</application>">
-<!ENTITY Makepp "<application>Make++</application>">
-<!ENTITY Python "<application>Python</application>">
-<!ENTITY ranlib "<application>ranlib</application>">
-<!ENTITY rmic "<application>rmic</application>">
-<!ENTITY SCons "<application>SCons</application>">
-<!ENTITY scons "<application>scons</application>">
-<!ENTITY ScCons "<application>ScCons</application>">
-<!ENTITY tar "<application>tar</application>">
-<!ENTITY touch "<application>touch</application>">
-<!ENTITY zip "<application>zip</application>">
-
-
-<!--
-
-  Classes.
-
--->
-
-<!ENTITY Action "<classname>Action</classname>">
-<!ENTITY ActionBase "<classname>ActionBase</classname>">
-<!ENTITY CommandAction "<classname>CommandAction</classname>">
-<!ENTITY FunctionAction "<classname>FunctionAction</classname>">
-<!ENTITY ListAction "<classname>ListAction</classname>">
-<!ENTITY Builder "<classname>Builder</classname>">
-<!ENTITY BuilderBase "<classname>BuilderBase</classname>">
-<!ENTITY CompositeBuilder "<classname>CompositeBuilder</classname>">
-<!ENTITY MultiStepBuilder "<classname>MultiStepBuilder</classname>">
-<!ENTITY Job "<classname>Job</classname>">
-<!ENTITY Jobs "<classname>Jobs</classname>">
-<!ENTITY Serial "<classname>Serial</classname>">
-<!ENTITY Parallel "<classname>Parallel</classname>">
-<!ENTITY Node "<classname>Node</classname>">
-<!ENTITY Node_FS "<classname>Node.FS</classname>">
-<!ENTITY Scanner "<classname>Scanner</classname>">
-<!ENTITY Sig "<classname>Sig</classname>">
-<!ENTITY Signature "<classname>Signature</classname>">
-<!ENTITY Taskmaster "<classname>Taskmaster</classname>">
-<!ENTITY TimeStamp "<classname>TimeStamp</classname>">
-<!ENTITY Walker "<classname>Walker</classname>">
-<!ENTITY Wrapper "<classname>Wrapper</classname>">
-
-
-
-<!--
-
-  Options, command-line.
-
--->
-
-<!ENTITY debug-explain "<literal>--debug=explain</literal>">
-<!ENTITY implicit-cache "<literal>--implicit-cache</literal>">
-<!ENTITY implicit-deps-changed "<literal>--implicit-deps-changed</literal>">
-<!ENTITY implicit-deps-unchanged "<literal>--implicit-deps-unchanged</literal>">
-<!ENTITY Q "<literal>-Q</literal>">
-
-<!--
-
-  Options, SConscript-settable.
-
--->
-
-<!ENTITY implicit_cache "<literal>implicit_cache</literal>">
-<!ENTITY implicit_deps_changed "<literal>implicit_deps_changed</literal>">
-<!ENTITY implicit_deps_unchanged "<literal>implicit_deps_unchanged</literal>">
-
-
-
-<!--
-
-  File and directory names.
-
--->
-
-<!ENTITY build "<filename>build</filename>">
-<!ENTITY Makefile "<filename>Makefile</filename>">
-<!ENTITY Makefiles "<filename>Makefiles</filename>">
-<!ENTITY SConscript "<filename>SConscript</filename>">
-<!ENTITY SConstruct "<filename>SConstruct</filename>">
-<!ENTITY Sconstruct "<filename>Sconstruct</filename>">
-<!ENTITY sconstruct "<filename>sconstruct</filename>">
-<!ENTITY sconsign "<filename>.sconsign</filename>">
-<!ENTITY src "<filename>src</filename>">
-
-
-
-<!--
-
-  Methods and functions.  This includes functions from both
-  the Build Engine and the Native Python Interface.
-
--->
-
-<!ENTITY Add "<function>Add</function>">
-<!ENTITY AddOptions "<function>AddOptions</function>">
-<!ENTITY Alias "<function>Alias</function>">
-<!ENTITY Aliases "<function>Aliases</function>">
-<!ENTITY Append "<function>Append</function>">
-<!ENTITY BoolOption "<function>BoolOption</function>">
-<!ENTITY Build "<function>Build</function>">
-<!ENTITY CacheDir "<function>CacheDir</function>">
-<!ENTITY Clean "<function>Clean</function>">
-<!ENTITY Clone "<function>Clone</function>">
-<!ENTITY Command "<function>Command</function>">
-<!ENTITY Configure "<function>Configure</function>">
-<!ENTITY Copy "<function>Copy</function>">
-<!ENTITY Default "<function>Default</function>">
-<!ENTITY DefaultRules "<function>DefaultRules</function>">
-<!ENTITY Depends "<function>Depends</function>">
-<!ENTITY Dir "<function>Dir</function>">
-<!ENTITY Entry "<function>Entry</function>">
-<!ENTITY EnumOption "<function>EnumOption</function>">
-<!ENTITY Environment "<function>Environment</function>">
-<!ENTITY Export "<function>Export</function>">
-<!ENTITY File "<function>File</function>">
-<!ENTITY Finish "<function>Finish</function>">
-<!ENTITY GenerateHelpText "<function>GenerateHelpText</function>">
-<!ENTITY Help "<function>Help</function>">
-<!ENTITY Ignore "<function>Ignore</function>">
-<!ENTITY Import "<function>Import</function>">
-<!ENTITY Install "<function>Install</function>">
-<!ENTITY InstallAs "<function>InstallAs</function>">
-<!ENTITY Link "<function>Link</function>">
-<!ENTITY ListOption "<function>ListOption</function>">
-<!ENTITY Local "<function>Local</function>">
-<!ENTITY Module "<function>Module</function>">
-<!ENTITY NoClean "<function>NoClean</function>">
-<!ENTITY Objects "<function>Objects</function>">
-<!ENTITY Options "<function>Options</function>">
-<!ENTITY PackageOption "<function>PackageOption</function>">
-<!ENTITY PathOption "<function>PathOption</function>">
-<!ENTITY Precious "<function>Precious</function>">
-<!ENTITY Prepend "<function>Prepend</function>">
-<!ENTITY Replace "<function>Replace</function>">
-<!ENTITY Repository "<function>Repository</function>">
-<!ENTITY Return "<function>Return</function>">
-<!ENTITY RuleSet "<function>RuleSet</function>">
-<!ENTITY Salt "<function>Salt</function>">
-<!ENTITY SetBuildSignatureType "<function>SetBuildSignatureType</function>">
-<!ENTITY SetContentSignatureType "<function>SetContentSignatureType</function>">
-<!ENTITY SourceSignature "<function>SourceSignature</function>">
-<!ENTITY SourceSignatures "<function>SourceSignatures</function>">
-<!ENTITY Split "<function>Split</function>">
-<!ENTITY TargetSignatures "<function>TargetSignatures</function>">
-<!ENTITY Task "<function>Task</function>">
-
-<!-- Environment methods -->
-<!ENTITY subst "<function>subst</function>">
-
-<!-- Configure context functions -->
-<!ENTITY Message "<function>Message</function>">
-<!ENTITY Result "<function>Result</function>">
-<!ENTITY CheckCHeader "<function>CheckCHeader</function>">
-<!ENTITY CheckCXXHeader "<function>CheckCXXHeader</function>">
-<!ENTITY CheckFunc "<function>CheckFunc</function>">
-<!ENTITY CheckHeader "<function>CheckHeader</function>">
-<!ENTITY CheckLib "<function>CheckLib</function>">
-<!ENTITY CheckLibWithHeader "<function>CheckLibWithHeader</function>">
-<!ENTITY CheckType "<function>CheckType</function>">
-<!ENTITY TryAction "<function>TryAction</function>">
-<!ENTITY TryBuild "<function>TryBuild</function>">
-<!ENTITY TryCompile "<function>TryCompile</function>">
-<!ENTITY TryLink "<function>TryLink</function>">
-<!ENTITY TryRun "<function>TryRun</function>">
-
-<!-- Python functions -->
-<!ENTITY str "<function>str</function>">
-<!ENTITY zipfile "<function>zipfile</function>">
-
-<!-- Obsolete, but referenced in old documents.  -->
-<!ENTITY Cache "<function>Cache</function>">
-
-
-
-<!--
-
-  Global variables.
-
--->
-
-<!ENTITY ARGUMENTS "<varname>ARGUMENTS</varname>">
-<!ENTITY BUILD_TARGETS "<varname>BUILD_TARGETS</varname>">
-<!ENTITY COMMAND_LINE_TARGETS "<varname>COMMAND_LINE_TARGETS</varname>">
-<!ENTITY DEFAULT_TARGETS "<varname>DEFAULT_TARGETS</varname>">
-
-
-
-<!--
-
-  Construction variables.
-
--->
-
-<!ENTITY BUILDERMAP "<varname>BUILDERMAP</varname>">
-<!ENTITY BUILDERS "<varname>BUILDERS</varname>">
-<!ENTITY CC "<varname>CC</varname>">
-<!ENTITY CCFLAGS "<varname>CCFLAGS</varname>">
-<!ENTITY CCCOM "<varname>CCCOM</varname>">
-<!ENTITY COLOR "<varname>COLOR</varname>">
-<!ENTITY COLORS "<varname>COLORS</varname>">
-<!ENTITY CONFIG "<varname>CONFIG</varname>">
-<!ENTITY CPPDEFINES "<varname>CPPDEFINES</varname>">
-<!ENTITY ENV "<varname>ENV</varname>">
-<!ENTITY JAVACLASSDIR "<varname>JAVACLASSDIR</varname>">
-<!ENTITY LIBDIRPREFIX "<varname>LIBDIRPREFIX</varname>">
-<!ENTITY LIBDIRSUFFIX "<varname>LIBDIRSUFFIX</varname>">
-<!ENTITY LIBLINKPREFIX "<varname>LIBLINKPREFIX</varname>">
-<!ENTITY LIBLINKSUFFIX "<varname>LIBLINKSUFFIX</varname>">
-<!ENTITY LIBPATH "<varname>LIBPATH</varname>">
-<!ENTITY LIBS "<varname>LIBS</varname>">
-<!ENTITY LINK "<varname>LINK</varname>">
-<!ENTITY LINKCOM "<varname>LINKCOM</varname>">
-<!ENTITY LINKFLAGS "<varname>LINKFLAGS</varname>">
-<!ENTITY RELEASE "<varname>RELEASE</varname>">
-<!ENTITY RELEASE_BUILD "<varname>RELEASE_BUILD</varname>">
-<!ENTITY SCANNERMAP "<varname>SCANNERMAP</varname>">
-<!ENTITY SCANNERS "<varname>SCANNERS</varname>">
-<!ENTITY TARFLAGS "<varname>TARFLAGS</varname>">
-<!ENTITY TARSUFFIX "<varname>TARSUFFIX</varname>">
-
-
-
-<!--
-
-  Environment variables.
-
--->
-
-<!ENTITY PATH "<varname>PATH</varname>">
-<!ENTITY PYTHONPATH "<varname>PYTHONPATH</varname>">
-<!ENTITY SCONSFLAGS "<varname>SCONSFLAGS</varname>">
-
-
-
-<!--
-
-  Function and method arguments.
-
--->
-
-<!ENTITY allowed_values "<varname>allowed_values</varname>">
-<!ENTITY build_dir "<varname>build_dir</varname>">
-<!ENTITY map "<varname>map</varname>">
-<!ENTITY ignorecase "<varname>ignorecase</varname>">
-<!ENTITY options "<varname>options</varname>">
-<!ENTITY exports "<varname>exports</varname>">
-<!ENTITY source "<varname>source</varname>">
-<!ENTITY target "<varname>target</varname>">
-
-
-
-<!--
-
-  Values of function and method arguments.
-
--->
-
-<!ENTITY all "<literal>all</literal>">
-<!ENTITY none "<literal>none</literal>">
-
-
-
-<!--
-
-  Builder and Scanner objects.
-
--->
-
-<!ENTITY BuildDir "<function>BuildDir</function>">
-<!ENTITY CFile "<function>CFile</function>">
-<!ENTITY CXXFile "<function>CXXFile</function>">
-<!ENTITY DVI "<function>DVI</function>">
-<!ENTITY Jar "<function>Jar</function>">
-<!ENTITY Java "<function>Java</function>">
-<!ENTITY JavaH "<function>JavaH</function>">
-<!ENTITY Library "<function>Library</function>">
-<!ENTITY Object "<function>Object</function>">
-<!ENTITY PCH "<function>PCH</function>">
-<!ENTITY PDF "<function>PDF</function>">
-<!ENTITY PostScript "<function>PostScript</function>">
-<!ENTITY Program "<function>Program</function>">
-<!ENTITY RES "<function>RES</function>">
-<!ENTITY RMIC "<function>RMIC</function>">
-<!ENTITY SharedLibrary "<function>SharedLibrary</function>">
-<!ENTITY SharedObject "<function>SharedObject</function>">
-<!ENTITY StaticLibrary "<function>StaticLibrary</function>">
-<!ENTITY StaticObject "<function>StaticObject</function>">
-<!ENTITY Tar "<function>Tar</function>">
-<!ENTITY Zip "<function>Zip</function>">
-
-<!-- Obsolete, but referenced in old documents.  -->
-<!ENTITY MakeBuilder "<function>Make</function>">
-
-
-
-<!--
-
-  Terms.  Define both singular and plural forms in various
-  case-sensitive combinations for use in titles, in-line, etc.
-
--->
-
-<!ENTITY buildfunc "<literal>builder function</literal>">
-<!ENTITY builder_method "<literal>builder method</literal>">
-
-<!ENTITY Configure_Contexts "<literal>Configure Contexts</literal>">
-<!ENTITY configure_context "<literal>configure context</literal>">
-
-<!ENTITY ConsEnv "<literal>Construction Environment</literal>">
-<!ENTITY ConsEnvs "<literal>Construction Environments</literal>">
-<!ENTITY Consenv "<literal>Construction environment</literal>">
-<!ENTITY Consenvs "<literal>Construction environments</literal>">
-<!ENTITY consenv "<literal>construction environment</literal>">
-<!ENTITY consenvs "<literal>construction environments</literal>">
-
-<!ENTITY ConsVar "<literal>Construction Variable</literal>">
-<!ENTITY ConsVars "<literal>Construction Variables</literal>">
-<!ENTITY Consvar "<literal>Construction variable</literal>">
-<!ENTITY Consvars "<literal>Construction variables</literal>">
-<!ENTITY consvar "<literal>construction variable</literal>">
-<!ENTITY consvars "<literal>construction variables</literal>">
-
-<!ENTITY CPPPATH "<literal>CPPPATH</literal>">
-
-<!ENTITY Dictionary "<literal>Dictionary</literal>">
-
-<!ENTITY Emitter "<literal>Emitter</literal>">
-<!ENTITY emitter "<literal>emitter</literal>">
-<!ENTITY Generator "<literal>Generator</literal>">
-<!ENTITY generator "<literal>generator</literal>">
-
-<!ENTITY Nodes "<literal>Nodes</literal>">
-
-<!ENTITY signature "<literal>signature</literal>">
-<!ENTITY buildsignature "<literal>build signature</literal>">
-
-<!ENTITY true "<literal>true</literal>">
-<!ENTITY false "<literal>false</literal>">
-
-<!ENTITY typedef "<literal>typedef</literal>">
-
-<!--
-
-  File and program names used in examples.
-
--->
-
-<!ENTITY bar "<application>bar</application>">
-<!ENTITY common1_c "<filename>common1.c</filename>">
-<!ENTITY common2_c "<filename>common2.c</filename>">
-<!ENTITY custom_py "<filename>custom.py</filename>">
-<!ENTITY goodbye "<application>goodbye</application>">
-<!ENTITY goodbye_o "<filename>goodbye.o</filename>">
-<!ENTITY goodbye_obj "<filename>goodbye.obj</filename>">
-<!ENTITY file_dll "<filename>file.dll</filename>">
-<!ENTITY file_in "<filename>file.in</filename>">
-<!ENTITY file_lib "<filename>file.lib</filename>">
-<!ENTITY file_o "<filename>file.o</filename>">
-<!ENTITY file_obj "<filename>file.obj</filename>">
-<!ENTITY file_out "<filename>file.out</filename>">
-<!ENTITY foo "<application>foo</application>">
-<!ENTITY foo_o "<filename>foo.o</filename>">
-<!ENTITY foo_obj "<filename>foo.obj</filename>">
-<!ENTITY hello "<application>hello</application>">
-<!ENTITY hello_c "<filename>hello.c</filename>">
-<!ENTITY hello_exe "<filename>hello.exe</filename>">
-<!ENTITY hello_h "<filename>hello.h</filename>">
-<!ENTITY hello_o "<filename>hello.o</filename>">
-<!ENTITY hello_obj "<filename>hello.obj</filename>">
-<!ENTITY libfile_a "<filename>libfile_a</filename>">
-<!ENTITY libfile_so "<filename>libfile_so</filename>">
-<!ENTITY new_hello "<application>new_hello</application>">
-<!ENTITY new_hello_exe "<application>new_hello.exe</application>">
-<!ENTITY prog "<filename>prog</filename>">
-<!ENTITY prog1 "<filename>prog1</filename>">
-<!ENTITY prog2 "<filename>prog2</filename>">
-<!ENTITY prog_c "<filename>prog.c</filename>">
-<!ENTITY prog_exe "<filename>prog.exe</filename>">
-<!ENTITY stdio_h "<filename>stdio.h</filename>">
-
-<!--
-
-  Punctuation.
-
--->
-
-<!ENTITY plus "<literal>+</literal>">
-<!ENTITY hash "<literal>#</literal>">
-
-<!--
-
-  Mailing lists
-
--->
-
-<!ENTITY scons-announce "<literal>announce@scons.tigris.org</literal>">
-<!ENTITY scons-devel "<literal>dev@scons.tigris.org</literal>">
-<!ENTITY scons-users "<literal>users@scons.tigris.org</literal>">
diff --git a/doc/design/summary.xml b/doc/design/summary.xml
new file mode 100644
index 0000000..36e1a90
--- /dev/null
+++ b/doc/design/summary.xml
@@ -0,0 +1,53 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-summary"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Summary</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+  <para>
+
+    &SCons; offers a robust and feature-rich design for an SC-build
+    tool.  With a Build Engine based on the proven design of
+    the &Cons; utility, it offers increased simplification of the
+    user interface for unsophisticated users with the addition
+    of the "do-the-right-thing" <function>env.Make</function>
+    method, increased flexibility for sophisticated users with the
+    addition of &Builder; and &Scanner; objects, a mechanism to
+    allow tool-masters (and users) to share working construction
+    environments, and embeddability to provide reliable dependency
+    management in a variety of environments and interfaces.
+
+  </para>
+
+</chapter>
diff --git a/doc/developer/architecture.xml b/doc/developer/architecture.xml
index 0fc357f..22caadf 100644
--- a/doc/developer/architecture.xml
+++ b/doc/developer/architecture.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-architecture"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Architecture</title>
+
 <!--
 
   __COPYRIGHT__
@@ -38,3 +50,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/developer/branches.xml b/doc/developer/branches.xml
index abba398..7f7fcc6 100644
--- a/doc/developer/branches.xml
+++ b/doc/developer/branches.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-branches"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Branches</title>
+
 <!--
 
   __COPYRIGHT__
@@ -38,3 +50,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/developer/copyright.xml b/doc/developer/copyright.xml
index d926f5b..2bb2db6 100644
--- a/doc/developer/copyright.xml
+++ b/doc/developer/copyright.xml
@@ -1,3 +1,13 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+
 <!--
 
   __COPYRIGHT__
@@ -30,3 +40,5 @@
 
  </para>
 </blockquote>
+
+</legalnotice>
diff --git a/doc/developer/cycle.xml b/doc/developer/cycle.xml
index 629a1a8..ecde3f8 100644
--- a/doc/developer/cycle.xml
+++ b/doc/developer/cycle.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-development-cycle"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Development Cycle</title>
+
 <!--
 
   __COPYRIGHT__
@@ -38,3 +50,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/developer/main.xml b/doc/developer/main.xml
index e2e414c..335cfa7 100644
--- a/doc/developer/main.xml
+++ b/doc/developer/main.xml
@@ -25,9 +25,7 @@
 
 -->
 
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
+<!DOCTYPE sconsdoc [
 
     <!ENTITY % version SYSTEM "../version.xml">
     %version;
@@ -35,18 +33,11 @@
     <!ENTITY % scons SYSTEM "../scons.mod">
     %scons;
 
-    <!ENTITY architecture SYSTEM "architecture.xml">
-    <!ENTITY branches SYSTEM "branches.xml">
-    <!ENTITY copyright SYSTEM "copyright.xml">
-    <!ENTITY cycle SYSTEM "cycle.xml">
-    <!ENTITY packaging SYSTEM "packaging.xml">
-    <!ENTITY preface SYSTEM "preface.xml">
-    <!ENTITY sourcetree SYSTEM "sourcetree.xml">
-    <!ENTITY testing SYSTEM "testing.xml">
-
 ]>
 
-<book>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
   <bookinfo>
     <title>SCons Developer's Guide &buildversion;</title>
 
@@ -64,47 +55,24 @@
       <holder>Steven Knight</holder>
     </copyright>
 
-    <legalnotice>
-      &copyright;
-    </legalnotice>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
 
     <releaseinfo>version &buildversion;</releaseinfo>
 
   </bookinfo>
 
-  <preface id="chap-preface">
-    <title>Preface</title>
-    &preface;
-  </preface>
-
-  <chapter id="chap-development-cycle">
-    <title>Development Cycle</title>
-    &cycle;
-  </chapter>
-
-  <chapter id="chap-source-tree">
-    <title>Source Tree</title>
-    &sourcetree;
-  </chapter>
-
-  <chapter id="chap-testing">
-    <title>Testing</title>
-    &testing;
-  </chapter>
-
-  <chapter id="chap-branches">
-    <title>Branches</title>
-    &branches;
-  </chapter>
-
-  <chapter id="chap-packaging">
-    <title>Packaging</title>
-    &packaging;
-  </chapter>
-
-  <chapter id="chap-architecture">
-    <title>Architecture</title>
-    &architecture;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="preface.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="cycle.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sourcetree.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="testing.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="branches.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="packaging.xml"/>
+
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
 
 </book>
diff --git a/doc/developer/packaging.xml b/doc/developer/packaging.xml
index 3860ee7..cfea6dc 100644
--- a/doc/developer/packaging.xml
+++ b/doc/developer/packaging.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-packaging"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Packaging</title>
+
 <!--
 
   __COPYRIGHT__
@@ -38,3 +50,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/developer/preface.xml b/doc/developer/preface.xml
index 39ef93a..7102671 100644
--- a/doc/developer/preface.xml
+++ b/doc/developer/preface.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-preface"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Preface</title>
+
 <!--
 
   __COPYRIGHT__
@@ -173,3 +185,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/developer/sourcetree.xml b/doc/developer/sourcetree.xml
index be1c45a..9455f99 100644
--- a/doc/developer/sourcetree.xml
+++ b/doc/developer/sourcetree.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-source-tree"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Source Tree</title>
+
 <!--
 
   __COPYRIGHT__
@@ -38,3 +50,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/developer/testing.xml b/doc/developer/testing.xml
index c577c5c..091a5a9 100644
--- a/doc/developer/testing.xml
+++ b/doc/developer/testing.xml
@@ -1,3 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-testing"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Testing</title>
+
 <!--
 
   __COPYRIGHT__
@@ -38,3 +50,5 @@
     </para>
 
   </section>
+
+</chapter>
diff --git a/doc/man/scons.xml b/doc/man/scons.xml
index cb4169f..f10a5bd 100644
--- a/doc/man/scons.xml
+++ b/doc/man/scons.xml
@@ -150,7 +150,7 @@ scons: Building targets  ...
 cp foo.in foo.out
 scons: done building targets.
 $
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The status messages
 (everything except the line that reads "cp foo.in foo.out")
@@ -184,7 +184,7 @@ from your external environment as follows:</para>
 <literallayout>
 import os
 env = Environment(ENV = {'PATH' : os.environ['PATH']})
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Similarly, if the commands use external environment variables
 like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc.,
@@ -194,7 +194,7 @@ these variables can also be explicitly propagated:</para>
 import os
 env = Environment(ENV = {'PATH' : os.environ['PATH'],
                          'HOME' : os.environ['HOME']})
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Or you may explicitly propagate the invoking user's
 complete external environment:</para>
@@ -202,7 +202,7 @@ complete external environment:</para>
 <literallayout>
 import os
 env = Environment(ENV = os.environ)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>This comes at the expense of making your build
 dependent on the user's environment being set correctly,
@@ -233,7 +233,7 @@ the target file or files to be built.</para>
 
 <literallayout>
 scons
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>will build all target files in or below the current directory.
 Explicit default targets
@@ -253,7 +253,7 @@ as a command-line target:</para>
 
 <literallayout>
 scons .
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Building all target files,
 including any files outside of the current directory,
@@ -262,21 +262,21 @@ of the root directory (on POSIX systems):</para>
 
 <literallayout>
 scons /
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or the path name(s) of the volume(s) in which all the targets
 should be built (on Windows systems):</para>
 
 <literallayout>
 scons C:\ D:\
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>To build only specific targets,
 supply them as command-line arguments:</para>
 
 <literallayout>
 scons foo bar
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>in which case only the specified targets will be built
 (along with any derived files on which they depend).</para>
@@ -289,13 +289,13 @@ necessary to build the specified target:</para>
 
 <literallayout>
 scons -c .
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>to remove all target files, or:</para>
 
 <literallayout>
 scons -c build export
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>to remove target files under build and export.
 Additional files or directories to remove can be specified using the
@@ -316,7 +316,7 @@ built:</para>
 
 <literallayout>
 scons src/subdir
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or by changing directory and invoking scons with the
 <option>-u</option>
@@ -329,7 +329,7 @@ targets relatively to the current subdirectory:</para>
 <literallayout>
 cd src/subdir
 scons -u .
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para><command>scons</command>
 supports building multiple targets in parallel via a
@@ -339,7 +339,7 @@ of simultaneous tasks that may be spawned:</para>
 
 <literallayout>
 scons -j 4
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>builds four targets in parallel, for example.</para>
 
@@ -366,7 +366,7 @@ may be specified on the command line:</para>
 
 <literallayout>
 scons debug=1 .
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>These variables are available in SConscript files
 through the ARGUMENTS dictionary,
@@ -378,7 +378,7 @@ if ARGUMENTS.get('debug', 0):
     env = Environment(CCFLAGS = '-g')
 else:
     env = Environment()
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The command-line variable arguments are also available
 in the ARGLIST list,
@@ -709,7 +709,7 @@ of a given derived file:</para>
 
 <literallayout>
 $ scons --debug=includes foo.o
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -783,7 +783,7 @@ $ scons --debug=presub
 Building myprog.o with action(s):
   $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
 ...
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -1077,7 +1077,7 @@ command:</para>
 -s, --silent, --quiet
 --taskmastertrace=FILE
 --tree=OPTIONS
-</literallayout> <!-- .fi -->
+</literallayout>
 
       </listitem>
       </varlistentry>
@@ -1180,7 +1180,7 @@ scons: Reading SConscript files ...
 scons: done reading SConscript files.
 scons&gt;&gt;&gt; build -n prog
 scons&gt;&gt;&gt; exit
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <variablelist>
   <varlistentry>
@@ -1436,7 +1436,7 @@ the last dir examined comes first in the resulting path.</para>
     %APPDATA%/scons/site_scons
     %HOME%/.scons/site_scons
     ./site_scons
-</literallayout> <!-- .fi -->
+</literallayout>
   </listitem>
   </varlistentry>
   <varlistentry>
@@ -1449,7 +1449,7 @@ the last dir examined comes first in the resulting path.</para>
     $HOME/Library/Application Support/SCons/site_scons
     $HOME/.scons/site_scons
     ./site_scons
-</literallayout> <!-- .fi -->
+</literallayout>
   </listitem>
   </varlistentry>
   <varlistentry>
@@ -1460,7 +1460,7 @@ the last dir examined comes first in the resulting path.</para>
     /usr/share/scons/site_scons
     $HOME/.scons/site_scons
     ./site_scons
-</literallayout> <!-- .fi -->
+</literallayout>
   </listitem>
   </varlistentry>
   <varlistentry>
@@ -1470,7 +1470,7 @@ the last dir examined comes first in the resulting path.</para>
     /usr/share/scons/site_scons
     $HOME/.scons/site_scons
     ./site_scons
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -1587,7 +1587,7 @@ scons --tree=derived,status
 # Prints all dependencies of target, with status information
 # and pruning dependencies of already-visited Nodes:
 scons --tree=all,prune,status target
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <variablelist>
   <varlistentry>
@@ -1940,7 +1940,7 @@ function:</para>
 
 <literallayout>
 env = Environment()
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Variables, called
 <emphasis>construction</emphasis>
@@ -1952,7 +1952,7 @@ or by assigning them a value after the object is created:</para>
 <literallayout>
 env = Environment(FOO = 'foo')
 env['BAR'] = 'bar'
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>As a convenience,
 construction variables may also be set or modified by the
@@ -1967,7 +1967,7 @@ or if the flags are distributed to a number of construction variables.</para>
 
 <literallayout>
 env = Environment(parse_flags = '-Iinclude -DEBUG -lm')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>This example adds 'include' to
 <emphasis role="bold">CPPPATH</emphasis>,
@@ -1989,7 +1989,7 @@ env = Environment(platform = 'cygwin')
 env = Environment(platform = 'os2')
 env = Environment(platform = 'posix')
 env = Environment(platform = 'win32')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Specifying a platform initializes the appropriate
 construction variables in the environment
@@ -2023,7 +2023,7 @@ def my_platform(env):
     env['VAR'] = 'xyzzy'
 
 env = Environment(platform = my_platform)
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>Additionally, a specific set of tools
 with which to initialize the environment
@@ -2031,13 +2031,13 @@ may be specified as an optional keyword argument:</para>
 
 <literallayout>
 env = Environment(tools = ['msvc', 'lex'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Non-built-in tools may be specified using the toolpath argument:</para>
 
 <literallayout>
 env = Environment(tools = ['default', 'foo'], toolpath = ['tools'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>This looks for a tool specification in tools/foo.py (as well as
 using the ordinary default tools for the platform).  foo.py should
@@ -2070,7 +2070,7 @@ methods:</para>
 base = Environment(toolpath=['custom_path'])
 derived = base.Clone(tools=['custom_tool'])
 derived.CustomBuilder()
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The elements of the tools list may also
 be functions or callable objects,
@@ -2083,7 +2083,7 @@ def my_tool(env):
     env['XYZZY'] = 'xyzzy'
 
 env = Environment(tools = [my_tool])
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>The individual elements of the tools list
 may also themselves be two-element lists of the form
@@ -2113,7 +2113,7 @@ def exists(env):
 # in SConstruct:
 env = Environment(tools = ['default', ('my_tool', {'arg1': 'abc'})],
                   toolpath=['tools'])
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>The tool definition (i.e. my_tool()) can use the PLATFORM variable from
 the environment it receives to customize the tool for different platforms.</para>
@@ -2212,7 +2212,7 @@ env.Program(source =  ['bar.c', 'foo.c'], target = 'bar')
 env.Program(target = 'bar', Split('bar.c foo.c'))
 env.Program(target = 'bar', env.Split('bar.c foo.c'))
 env.Program('bar', source = 'bar.c foo.c'.split())
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Target and source file names
 that are not absolute path names
@@ -2264,7 +2264,7 @@ env.Program('#/bar', 'bar.c')
 # Builds the program "other/foo" (relative to the top-level
 # SConstruct directory) from "subdir/foo.c":
 env.Program('#other/foo', 'foo.c')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>When the target shares the same base name
 as the source and only the suffix varies,
@@ -2288,7 +2288,7 @@ env.Program(target = 'bar', source = 'bar.c')
 env.Program('bar', source = 'bar.c')
 env.Program(source = 'bar.c')
 env.Program('bar.c')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>As a convenience, a
 <emphasis role="bold">srcdir</emphasis>
@@ -2310,7 +2310,7 @@ and
 
 <literallayout>
 env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>It is possible to override or add construction variables when calling a
 builder method by passing additional keyword arguments.
@@ -2321,7 +2321,7 @@ libraries for just one program:</para>
 
 <literallayout>
 env.Program('hello', 'hello.c', LIBS=['gl', 'glut'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or generate a shared library with a non-standard suffix:</para>
 
@@ -2329,7 +2329,7 @@ env.Program('hello', 'hello.c', LIBS=['gl', 'glut'])
 env.SharedLibrary('word', 'word.cpp',
                   SHLIBSUFFIX='.ocx',
                   LIBSUFFIXES=['.ocx'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>(Note that both the $SHLIBSUFFIX and $LIBSUFFIXES variables must be set
 if you want SCons to search automatically
@@ -2342,7 +2342,7 @@ keyword argument in an override:</para>
 
 <literallayout>
 env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>This example adds 'include' to
 <emphasis role="bold">CPPPATH</emphasis>,
@@ -2360,7 +2360,7 @@ they may also be called without an explicit environment:</para>
 <literallayout>
 Program('hello', 'hello.c')
 SharedLibrary('word', 'word.cpp')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>In this case,
 the methods are called internally using a default construction
@@ -2375,7 +2375,7 @@ to the Python module:</para>
 
 <literallayout>
 from SCons.Script import *
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>All builder methods return a list-like object
 containing Nodes that
@@ -2398,7 +2398,7 @@ flag when compiling one specific object file:</para>
 <literallayout>
 bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
 env.Program(source = ['foo.c', bar_obj_list, 'main.c'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Using a Node in this way
 makes for a more portable build
@@ -2421,7 +2421,7 @@ bar = Object('bar.c')
 objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o']
 for object in objects:
     print str(object)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Or you can use the
 <emphasis role="bold">Flatten</emphasis>()
@@ -2435,7 +2435,7 @@ bar = Object('bar.c')
 objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o'])
 for object in objects:
     print str(object)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Note also that because Builder calls return
 a list-like object, not an actual Python list,
@@ -2469,7 +2469,7 @@ object_files = []
 # Instead, use the .extend() method:
 object_files.extend(Object('bar.c'))
 
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The path name for a Node's file may be used
 by passing the Node to the Python-builtin
@@ -2479,7 +2479,7 @@ function:</para>
 <literallayout>
 bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR')
 print "The path to bar_obj is:", str(bar_obj_list[0])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Note again that because the Builder call returns a list,
 we have to access the first element in the list
@@ -2518,7 +2518,7 @@ env.Command('sub/dir/foo.out', 'sub/dir/foo.in',
 env.Command('sub/dir/foo.out', 'sub/dir/foo.in',
             "cp foo.in foo.out",
             chdir=1)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Note that scons will
 <emphasis>not</emphasis>
@@ -2649,12 +2649,12 @@ if you call something as a global function
 it looks like:</para>
 <literallayout>
 Function(<emphasis>arguments</emphasis>)
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>and if you call something through a construction
 environment it looks like:</para>
 <literallayout>
 env.Function(<emphasis>arguments</emphasis>)
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>If you can call the functionality in both ways,
 then both forms are listed.</para>
 
@@ -2664,7 +2664,7 @@ to the Python module:</para>
 
 <literallayout>
 from SCons.Script import *
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Except where otherwise noted,
 the same-named
@@ -2682,7 +2682,7 @@ For example:</para>
 env = Environment(FOO = 'foo')
 Default('$FOO')
 env.Default('$FOO')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>In the above example,
 the first call to the global
@@ -2750,7 +2750,7 @@ to the Python module:</para>
 
 <literallayout>
 from SCons.Script import *
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
 <variablelist>
@@ -2785,7 +2785,7 @@ third_tuple = ARGLIST[2]
 print "third keyword, value =", third_tuple[0], third_tuple[1]
 for key, value in ARGLIST:
     # process key and value
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
   </listitem>
@@ -2812,7 +2812,7 @@ if ARGUMENTS.get('debug', 0):
     env = Environment(CCFLAGS = '-g')
 else:
     env = Environment()
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
   </listitem>
@@ -2853,7 +2853,7 @@ if 'foo' in BUILD_TARGETS:
     print "Don't forget to test the `foo' program!"
 if 'special/program' in BUILD_TARGETS:
     SConscript('special')
-</literallayout> <!-- .fi -->
+</literallayout>
   </listitem>
   </varlistentry>
 </variablelist>
@@ -2891,7 +2891,7 @@ if 'foo' in COMMAND_LINE_TARGETS:
     print "Don't forget to test the `foo' program!"
 if 'special/program' in COMMAND_LINE_TARGETS:
     SConscript('special')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -->
   </listitem>
@@ -2915,7 +2915,7 @@ function to get at the path name for each Node.</para>
 print str(DEFAULT_TARGETS[0])
 if 'foo' in map(str, DEFAULT_TARGETS):
     print "Don't forget to test the `foo' program!"
-</literallayout> <!-- .fi -->
+</literallayout>
   </listitem>
   </varlistentry>
 </variablelist>
@@ -2934,7 +2934,7 @@ Default('bar')
 print map(str, DEFAULT_TARGETS)   # now a node ['foo', 'bar']
 Default(None)
 print map(str, DEFAULT_TARGETS)   # back to []
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Consequently, be sure to use
 <emphasis role="bold">DEFAULT_TARGETS</emphasis>
@@ -3016,20 +3016,20 @@ method of the construction environment:</para>
 <literallayout>
 dict = env.Dictionary()
 dict["CC"] = "cc"
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or using the [] operator:</para>
 
 <literallayout>
 env["CC"] = "cc"
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Construction variables can also be passed to the construction environment
 constructor:</para>
 
 <literallayout>
 env = Environment(CC="cc")
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or when copying a construction environment using the
 <emphasis role="bold">Clone</emphasis>
@@ -3037,7 +3037,7 @@ method:</para>
 
 <literallayout>
 env2 = env.Clone(CC="cl.exe")
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -3275,7 +3275,7 @@ the default is:</para>
 extern "C"
 #endif
 char function_name();
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>The optional
 <emphasis>language</emphasis>
 argument should be
@@ -3395,7 +3395,7 @@ the default is "C".
 Example:</para>
 <literallayout>
 sconf.CheckType('foo_type', '#include "my_types.h"', 'C++')
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -3469,7 +3469,7 @@ if conf.CheckLibWithHeader( 'qt', 'qapp.h', 'c++',
     # do stuff for qt - usage, e.g.
     conf.env.Append( CPPFLAGS = '-DWITH_QT' )
 env = conf.Finish()
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <variablelist>
   <varlistentry>
@@ -3508,7 +3508,7 @@ For example,
 will return success only if short is two bytes.</para>
 
 <literallayout>
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -3566,7 +3566,7 @@ conf.Define('A_SYMBOL')
 # Puts the following line in the config header file:
 #    #define A_SYMBOL 1
 conf.Define('A_SYMBOL', 1)
-</programlisting> <!-- .fi -->
+</programlisting>
 
 
 <para>Be careful about quoting string values, though:</para>
@@ -3582,7 +3582,7 @@ conf.Define('A_SYMBOL', "YA")
 # Puts the following line in the config header file:
 #    #define A_SYMBOL "YA"
 conf.Define('A_SYMBOL', '"YA"')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 
 <para>For comment:</para>
@@ -3595,7 +3595,7 @@ conf = Configure( env )
 #    /* Set to 1 if you have a symbol */
 #    #define A_SYMBOL 1
 conf.Define('A_SYMBOL', 1, 'Set to 1 if you have a symbol')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>You can define your own custom checks.
 in addition to the predefined checks.
@@ -3755,7 +3755,7 @@ if not conf.CheckQt('/usr/lib/qt'):
     print 'We really need qt!'
     Exit(1)
 env = conf.Finish()
-</programlisting> <!-- .fi -->
+</programlisting>
 
 </refsect2>
 
@@ -3773,7 +3773,7 @@ object to support overriding construction variables
 on the command line:</para>
 <literallayout>
 $ scons VARIABLE=foo
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>The variable values can also be specified in a text-based SConscript file.
 To create a Variables object, call the Variables() function:</para>
 
@@ -3804,7 +3804,7 @@ Example:</para>
 vars = Variables('custom.py')
 vars = Variables('overrides.py', ARGUMENTS)
 vars = Variables(None, {FOO:'expansion', BAR:7})
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Variables objects have the following methods:</para>
 
@@ -3852,7 +3852,7 @@ def validate_color(key, val, env):
     if not val in ['red', 'blue', 'yellow']:
         raise Exception("Invalid color value '%s'" % val)
 vars.Add('COLOR', validator=valid_color)
-</programlisting> <!-- .fi -->
+</programlisting>
 
   </listitem>
   </varlistentry>
@@ -3876,7 +3876,7 @@ opt.AddVariables(
        ('VALIDATE', 'An option for testing validation',
         'notset', validator, None),
     )
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -3900,7 +3900,7 @@ the Environment() function:</para>
 
 <literallayout>
 env = Environment(variables=vars)
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -3916,7 +3916,7 @@ are added to the construction environment.</para>
 
 <literallayout>
 CC = 'my_cc'
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <variablelist>
   <varlistentry>
@@ -3933,7 +3933,7 @@ not configured.</para>
 env = Environment(variables=vars)
 for key, value in vars.UnknownVariables():
     print "unknown variable:  %s=%s" % (key, value)
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -3952,7 +3952,7 @@ vars = Variables(['variables.cache', 'custom.py'])
 vars.Add(...)
 vars.Update(env)
 vars.Save('variables.cache', env)
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -3982,7 +3982,7 @@ function).</para>
 <literallayout>
 Help(vars.GenerateHelpText(env))
 Help(vars.GenerateHelpText(env, sort=cmp))
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -4011,7 +4011,7 @@ def my_format(env, opt, help, default, actual):
     fmt = "\n%s: default=%s actual=%s (%s)\n"
     return fmt % (opt, default. actual, help)
 vars.FormatVariableHelpText = my_format
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>To make it more convenient to work with customizable Variables,
 <command>scons</command>
@@ -4265,7 +4265,7 @@ vars.AddVariables(
                PathVariable.PathIsDir),
 
 )
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -4338,7 +4338,7 @@ File('foo.c').srcnode().path   # source path of the given source file.
 # Builders also return File objects:
 foo = env.Program('foo.c')
 print "foo will be built in %s"%foo.path
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>A
 <emphasis>Dir</emphasis>
@@ -4449,7 +4449,7 @@ docs = Dir('docs')
 html = docs.Dir('html')
 index = html.File('index.html')
 css = index.File('app.css')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 </refsect1>
@@ -4558,7 +4558,7 @@ b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
 b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
             suffix = { None: "file-",
                        "$SRC_SFX_A": gen_prefix })
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <variablelist>
   <varlistentry>
@@ -4585,7 +4585,7 @@ b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
 b = Builder("build_it &lt; $SOURCE &gt; $TARGET",
             suffix = { None: ".sfx1",
                        "$SRC_SFX_A": gen_suffix })
-</programlisting> <!-- .fi -->
+</programlisting>
 
   </listitem>
   </varlistentry>
@@ -4616,7 +4616,7 @@ env.B1('foo.txt', 'foo.in')
 
 # Builds "bar.txt.out" because ensure_suffix is set.
 env.B2('bar.txt', 'bar.in')
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -4696,7 +4696,7 @@ MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir)
 env = Environment()
 env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder})
 env.MakeDirectory('new_directory', [])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 
 <para>Note that the call to the MakeDirectory Builder
@@ -4733,7 +4733,7 @@ CollectBuilder = Builder(action=my_mkdir, source_factory=Entry)
 env = Environment()
 env.Append(BUILDERS = {'Collect':CollectBuilder})
 env.Collect('archive', ['directory_name', 'file_name'])
-</programlisting> <!-- .fi -->
+</programlisting>
 
   </listitem>
   </varlistentry>
@@ -4800,7 +4800,7 @@ def e_suf2(target, source, env):
 b = Builder("my_build &lt; $TARGET &gt; $SOURCE",
             emitter = {'.suf1' : e_suf1,
                        '.suf2' : e_suf2})
-</programlisting> <!-- .fi -->
+</programlisting>
 
   </listitem>
   </varlistentry>
@@ -4860,7 +4860,7 @@ def g(source, target, env, for_signature):
     return [["gcc", "-c", "-o"] + target + source]
 
 b = Builder(generator=g)
-</programlisting> <!-- .fi -->
+</programlisting>
 
 
 <para>The
@@ -4941,7 +4941,7 @@ b = Builder(action={'.in' : 'build $SOURCES &gt; $TARGET'},
 
 env = Environment(BUILDERS = {'MyBuild':b})
 env.MyBuild('foo.out', ['foo.in', 'foo.extra'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -4960,7 +4960,7 @@ used to call the Builder for the target file.)</para>
 b = Builder(action="build &lt; $SOURCE &gt; $TARGET")
 env = Environment(BUILDERS = {'MyBuild' : b})
 env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy')
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5012,7 +5012,7 @@ b = Builder(action="build &lt; ${SOURCE.file} &gt; ${TARGET.file}",
             chdir=1)
 env = Environment(BUILDERS = {'MyBuild' : b})
 env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para><emphasis role="bold">WARNING:</emphasis>
 Python only keeps one current directory
@@ -5119,7 +5119,7 @@ Action('@build $TARGET $SOURCES')
 
 # Ignores return value
 Action('-build $TARGET $SOURCES')
-</literallayout> <!-- .fi -->
+</literallayout>
 <!--  XXX From Gary Ruben, 23 April 2002: -->
 <!--  What would be useful is a discussion of how you execute command -->
 <!--  shell commands ie. what is the process used to spawn the shell, pass -->
@@ -5150,7 +5150,7 @@ a command in a list within a list:</para>
 
 <literallayout>
 Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']])
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5181,7 +5181,7 @@ via the built-in Python str() function:</para>
 <literallayout>
 target_file_name = str(target)
 source_file_names = map(lambda x: str(x), source)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The function should return
 <literal>0</literal>
@@ -5198,7 +5198,7 @@ def build_it(target = None, source = None, env = None):
     return 0
 
 a = Action(build_it)
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>If the action argument is not one of the above,
 None is returned.</para>
@@ -5266,7 +5266,7 @@ s = Action(build_it, cmdstr="building '$TARGET' from '$SOURCE'")
 
 # You can provide a configurable variable.
 l = Action(build_it, '$STRINGIT')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>The third and succeeding arguments, if present,
 may either be a construction variable or a list of construction variables
@@ -5294,7 +5294,7 @@ a = Action(build_it, '$STRINGIT', ['XXX'])
 
 # Alternatively, use a keyword argument.
 a = Action(build_it, varlist=['XXX'])
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>The
 <emphasis role="bold">Action</emphasis>()
@@ -5350,7 +5350,7 @@ targets and source.</para>
 <literallayout>
 a = Action("build &lt; ${SOURCE.file} &gt; ${TARGET.file}",
            chdir=1)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 
 <para><emphasis role="bold">exitstatfunc</emphasis>
@@ -5379,7 +5379,7 @@ def always_succeed(s):
     return 0
 a = Action("build &lt; ${SOURCE.file} &gt; ${TARGET.file}",
            exitstatfunc=always_succeed)
-</programlisting> <!-- .fi -->
+</programlisting>
 
 
 <para><emphasis role="bold">batch_key</emphasis>
@@ -5415,7 +5415,7 @@ have actually changed since their targets were built.</para>
 
 <literallayout>
 a = Action('build $CHANGED_SOURCES', batch_key=True)
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The
 <emphasis role="bold">batch_key</emphasis>
@@ -5499,7 +5499,7 @@ def batch_key(action, env, target, source):
         return None
     return (id(action), id(env), tdir)
 a = Action('build $CHANGED_SOURCES', batch_key=batch_key)
-</programlisting> <!-- .fi -->
+</programlisting>
 
   </listitem>
   </varlistentry>
@@ -5545,7 +5545,7 @@ you can use the
 global function to do so:</para>
 <literallayout>
 Execute(Touch('file'))
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Second,
 you can use these functions
@@ -5567,7 +5567,7 @@ env.Command('foo.out', 'foo.in',
              Copy('$TMPBUILD', '${SOURCE.dir}'),
              "cd $TMPBUILD &amp;&amp; make",
              Delete('$TMPBUILD')])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <variablelist>
   <varlistentry>
@@ -5586,7 +5586,7 @@ Execute(Chmod('file', 0755))
 env.Command('foo.out', 'foo.in',
             [Copy('$TARGET', '$SOURCE'),
              Chmod('$TARGET', 0755)])
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5606,7 +5606,7 @@ Execute(Copy('foo.output', 'foo.input'))
 
 env.Command('bar.out', 'bar.in',
             Copy('$TARGET', '$SOURCE'))
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5639,7 +5639,7 @@ env.Command('foo.out', 'foo.in',
              MyBuildAction])
 
 Execute(Delete('file_that_must_exist', must_exist=1))
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5660,7 +5660,7 @@ env.Command('foo.out', 'foo.in',
              Copy('/tmp/builddir/foo.in', '$SOURCE'),
              "cd /tmp/builddir &amp;&amp; make",
              Copy('$TARGET', '/tmp/builddir/foo.out')])
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5682,7 +5682,7 @@ Execute(Move('file.destination', 'file.source'))
 env.Command('output_file', 'input_file',
             [MyBuildAction,
              Move('$TARGET', 'file_created_by_MyBuildAction')])
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5701,7 +5701,7 @@ Execute(Touch('file_to_be_touched'))
 env.Command('marker', 'input_file',
             [MyBuildAction,
              Touch('$TARGET')])
-</literallayout> <!-- .fi -->
+</literallayout>
 
   </listitem>
   </varlistentry>
@@ -5799,13 +5799,13 @@ sources=['foo.c', 'bar.c']:</para>
 
 <literallayout>
 action='$CC -c -o $TARGET $SOURCES'
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>would produce the command line:</para>
 
 <literallayout>
 cc -c -o foo foo.c bar.c
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Variable names may be surrounded by curly braces ({})
 to separate the name from the trailing characters.
@@ -5816,13 +5816,13 @@ In the previous example, the string:</para>
 
 <literallayout>
 ${SOURCES[1]}
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>would produce:</para>
 
 <literallayout>
 bar.c
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Additionally, a variable name may
 have the following special
@@ -5955,7 +5955,7 @@ Repository('/usr/repository')
 $SOURCE              =&gt; sub/dir/file.x
 ${SOURCE.rsrcpath}   =&gt; /usr/repository/src/file.x
 ${SOURCE.rsrcdir}    =&gt; /usr/repository/src
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Note that curly braces braces may also be used
 to enclose arbitrary Python code to be evaluated.
@@ -5992,7 +5992,7 @@ def foo(target, source, env, for_signature):
 
 # Will expand $BAR to "bar baz"
 env=Environment(FOO=foo, BAR="$FOO baz")
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>You can use this feature to pass arguments to a
 Python function by creating a callable class
@@ -6017,7 +6017,7 @@ class foo(object):
 
 # Will expand $BAR to "my argument bar baz"
 env=Environment(FOO=foo, BAR="${FOO('my argument')} baz")
-</literallayout> <!-- .fi -->
+</literallayout>
 
 
 <para>The special pseudo-variables
@@ -6045,21 +6045,21 @@ For example, the command line:</para>
 
 <literallayout>
 echo Last build occurred $( $TODAY $). &gt; $TARGET
-</literallayout> <!-- .fi -->
+</literallayout>
 
 
 <para>would execute the command:</para>
 
 <literallayout>
 echo Last build occurred $TODAY. &gt; $TARGET
-</literallayout> <!-- .fi -->
+</literallayout>
 
 
 <para>but the command signature added to any target files would be:</para>
 
 <literallayout>
 echo Last build occurred  . &gt; $TARGET
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6074,15 +6074,15 @@ So in the following case:</para>
 env['COND'] = 0
 env.Command('foo.out', 'foo.in',
 <!--    '''echo ${COND==1 and 'FOO' or 'BAR'} &gt; $TARGET''') -->
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>the command executed will be either</para>
 <literallayout>
 echo FOO &gt; foo.out
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>or</para>
 <literallayout>
 echo BAR &gt; foo.out
-</literallayout> <!-- .fi -->
+</literallayout>
 <para>according to the current value of env['COND'] when the command is
 executed.  The evaluation occurs when the target is being
 built, not when the SConscript is being read.  So if env['COND'] is changed
@@ -6103,7 +6103,7 @@ env.Command('foo.out', 'foo.in',
 
 # Will execute this:
 #  echo foo1 foo2 &gt; foo.out
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>SCons uses the following rules when converting construction variables into
 command lines:</para>
@@ -6377,7 +6377,7 @@ XYZScanner = Scanner(xyz_scan)
 SourceFileScanner.add_scanner('.xyz', XYZScanner)
 
 env.Program('my_prog', ['file1.c', 'file2.f', 'file3.xyz'])
-</programlisting> <!-- .fi -->
+</programlisting>
 
 </refsect2>
 </refsect1>
@@ -6480,7 +6480,7 @@ around the assignments:</para>
 
 <literallayout>
 scons "FOO=BAR" "BAZ=BLEH"
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Second, the Cygwin shell does not
 recognize this file as being the same
@@ -6510,7 +6510,7 @@ then you must explictly tell SCons to use MinGW by passing</para>
 
 <literallayout>
 tools=['mingw']
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>to the Environment() function, because SCons will prefer the MSVC tools
 over the MinGW tools.</para>
@@ -6528,7 +6528,7 @@ this section contains a brief overview of some common tasks.</para>
 <literallayout>
 env = Environment()
 env.Program(target = 'foo', source = 'foo.c')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Note:  Build the file by specifying
 the target as an argument
@@ -6542,7 +6542,7 @@ or by specifying a dot ("scons .").</para>
 <literallayout>
 env = Environment()
 env.Program(target = 'foo', source = Split('f1.c f2.c f3.c'))
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6551,7 +6551,7 @@ env.Program(target = 'foo', source = Split('f1.c f2.c f3.c'))
 <literallayout>
 env = Environment(CCFLAGS = '-g')
 env.Program(target = 'foo', source = 'foo.c')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6565,7 +6565,7 @@ SCons will construct the right -I options from CPPPATH.</para>
 <literallayout>
 env = Environment(CPPPATH = ['.'])
 env.Program(target = 'foo', source = 'foo.c')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6574,7 +6574,7 @@ env.Program(target = 'foo', source = 'foo.c')
 <literallayout>
 env = Environment(CPPPATH = ['include1', 'include2'])
 env.Program(target = 'foo', source = 'foo.c')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6584,7 +6584,7 @@ env.Program(target = 'foo', source = 'foo.c')
 env = Environment()
 env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c'))
 env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6594,7 +6594,7 @@ env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c'])
 env = Environment()
 env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c'])
 env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c'))
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6604,7 +6604,7 @@ env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c'))
 env = Environment(LIBS = 'mylib', LIBPATH = ['.'])
 env.Library(target = 'mylib', source = Split('l1.c l2.c'))
 env.Program(target = 'prog', source = ['p1.c', 'p2.c'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6623,7 +6623,7 @@ env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex')
 
 # The following creates "bar.pdf" from "bar.tex"
 env.PDFBuilder(target = 'bar', source = 'bar')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Note also that the above initialization
 overwrites the default Builder objects,
@@ -6643,7 +6643,7 @@ env = Environment()
 env.Append(BUILDERS = {'PDFBuilder' : bld})
 env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex')
 env.Program(target = 'bar', source = 'bar.c')
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>You also can use other Pythonic techniques to add
 to the BUILDERS construction variable, such as:</para>
@@ -6651,7 +6651,7 @@ to the BUILDERS construction variable, such as:</para>
 <literallayout>
 env = Environment()
 env['BUILDERS]['PDFBuilder'] = bld
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6690,7 +6690,7 @@ env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
 bar_in = File('bar.in')
 env.Command('bar', bar_in, 'kprocess $SOURCES &gt; $TARGET')
 bar_in.target_scanner = kscan
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>It is important to note that you
 have to return a list of File nodes from the scan function, simple
@@ -6737,7 +6737,7 @@ env = Environment(SCANNERS = scanners + [scanner],
                   MYPATH = ['incs'])
 
 env.Command('foo', 'foo.x', 'xprocess &lt; $SOURCES &gt; $TARGET')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>The
 <emphasis role="bold">FindPathDirs</emphasis>()
@@ -6775,7 +6775,7 @@ scanner = Scanner(name = 'myscanner',
                  skeys = ['.x'],
                  path_function = pf
                  )
-</programlisting> <!-- .fi -->
+</programlisting>
 
 </refsect2>
 
@@ -6806,7 +6806,7 @@ sub/dir/SConscript:
     env = Environment()
     # Builds sub/dir/foo from sub/dir/foo.c
     env.Program(target = 'foo', source = 'foo.c')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 </refsect2>
 
@@ -6828,7 +6828,7 @@ subdirectory/SConscript:
 
     Import("env")
     env.Program(target = 'foo', source = 'foo.c')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 </refsect2>
 
@@ -6855,7 +6855,7 @@ src/SConscript:
     Import("cppdefines")
     env = Environment(CPPDEFINES = cppdefines)
     env.Program(target = 'src', source = 'src.c')
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>Note the use of the Export() method
 to set the "cppdefines" variable to a different
@@ -6889,7 +6889,7 @@ Main/SConscript:
     Import('env')
     e = env.Copy(LIBS = ['a', 'b'])
     e.Program('foo', Split('m1.c m2.c m3.c'))
-</programlisting> <!-- .fi -->
+</programlisting>
 
 <para>The '#' in the LIBPATH directories specify that they're relative to the
 top-level directory, so they don't turn into "Main/libA" when they're
@@ -6913,19 +6913,19 @@ vars = Variables('custom.py')
 vars.Add('CC', 'The C compiler.')
 env = Environment(variables=vars)
 Help(vars.GenerateHelpText(env))
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>The user could specify the C compiler on the command line:</para>
 
 <literallayout>
 scons "CC=my_cc"
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or in the custom.py file:</para>
 
 <literallayout>
 CC = 'my_cc'
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>or get documentation on the options:</para>
 
@@ -6936,7 +6936,7 @@ CC: The C compiler.
     default: None
     actual: cc
 
-</literallayout> <!-- .fi -->
+</literallayout>
 
 </refsect2>
 
@@ -6956,26 +6956,26 @@ compiling to object files. For example:</para>
 <literallayout>
 #include &lt;windows.h&gt;
 #include &lt;my_big_header.h&gt;
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>StdAfx.cpp:</para>
 <literallayout>
 #include &lt;StdAfx.h&gt;
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Foo.cpp:</para>
 <literallayout>
 #include &lt;StdAfx.h&gt;
 
 /* do some stuff */
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>Bar.cpp:</para>
 <literallayout>
 #include &lt;StdAfx.h&gt;
 
 /* do some other stuff */
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>SConstruct:</para>
 <literallayout>
@@ -6983,7 +6983,7 @@ env=Environment()
 env['PCHSTOP'] = 'StdAfx.h'
 env['PCH'] = env.PCH('StdAfx.cpp')[0]
 env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>For more information see the document for the PCH builder, and the PCH and
 PCHSTOP construction variables. To learn about the details of precompiled
@@ -7004,7 +7004,7 @@ variable.</para>
 env=Environment()
 env['PDB'] = 'MyApp.pdb'
 env.Program('MyApp', ['Foo.cpp', 'Bar.cpp'])
-</literallayout> <!-- .fi -->
+</literallayout>
 
 <para>For more information see the document for the PDB construction variable.</para>
 
diff --git a/doc/python10/MANIFEST b/doc/python10/MANIFEST
index c9484d8..1be563b 100644
--- a/doc/python10/MANIFEST
+++ b/doc/python10/MANIFEST
@@ -12,5 +12,4 @@ main.xml
 node.fig
 process.xml
 scanner.fig
-scons.mod
-sig.fig
+summary.xml
diff --git a/doc/python10/abstract.xml b/doc/python10/abstract.xml
index 45b4918..337aa69 100644
--- a/doc/python10/abstract.xml
+++ b/doc/python10/abstract.xml
@@ -1,3 +1,38 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<abstract xmlns="http://www.scons.org/dbxsd/v1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   &SCons; is a software construction tool (build tool, or make tool)
@@ -30,3 +65,5 @@
   and discusses future plans and directions for the tool.
 
 </para>
+
+</abstract>
diff --git a/doc/python10/acks.xml b/doc/python10/acks.xml
index 895bad7..d3f3c42 100644
--- a/doc/python10/acks.xml
+++ b/doc/python10/acks.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-acks"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Acknowledgements</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   First, many thanks to the great group of developers who dove in right
@@ -25,3 +62,5 @@
   to experiment with &Cons; in the first place.
 
 </para>
+
+</section>
diff --git a/doc/python10/arch.eps b/doc/python10/arch.eps
deleted file mode 100644
index 1fdd51f..0000000
--- a/doc/python10/arch.eps
+++ /dev/null
@@ -1,134 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/arch.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan  2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 218 182
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 182 moveto 0 0 lineto 218 0 lineto 218 182 lineto closepath clip newpath
--215.3 324.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-/Courier-Bold ff 300.00 scf sf
-3825 2925 m
-gs 1 -1 sc (scons) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-3825 3225 m
-gs 1 -1 sc (Script) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-5100 4875 m
-gs 1 -1 sc (Build Engine) col0 sh gr
-/Courier-Bold ff 300.00 scf sf
-4200 4875 m
-gs 1 -1 sc (SCons) col0 sh gr
-% Polyline
-7.500 slw
-n 3600 4200 m 7200 4200 l 7200 5400 l 3600 5400 l
- cp gs col0 s gr 
-/Courier-Bold ff 300.00 scf sf
-4725 4050 m
-gs 1 -1 sc (SCons) col0 sh gr
-/Times-Roman ff 300.00 scf sf
-5625 4050 m
-gs 1 -1 sc (API) col0 sh gr
-% Polyline
-n 3600 2400 m 3600 2400 l 3600 2400 l 3600 2400 l
- cp gs col0 s gr 
-% Polyline
-n 3600 2400 m 4800 2400 l 4800 3600 l 3600 3600 l
- cp gs col0 s gr 
-% Polyline
-n 3600 3600 m 7200 3600 l 7200 4200 l 3600 4200 l
- cp gs col0 s gr 
-% Polyline
- [60] 0 sd
-n 6000 3600 m 7200 3600 l 7200 2400 l 6000 2400 l
- cp gs col0 s gr  [] 0 sd
-/Times-Italic ff 300.00 scf sf
-6300 2925 m
-gs 1 -1 sc (other) col0 sh gr
-/Times-Italic ff 300.00 scf sf
-6150 3225 m
-gs 1 -1 sc (interface) col0 sh gr
-$F2psEnd
-rs
diff --git a/doc/python10/arch.svg b/doc/python10/arch.svg
new file mode 100644
index 0000000..df3a8c0
--- /dev/null
+++ b/doc/python10/arch.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.07440476,0,0,0.07440476,-26.785704,242.18362)"
+       id="g3017"
+       style="fill:none;stroke-width:0.025in">
+      <rect
+         width="3600"
+         height="1200"
+         rx="0"
+         x="3600"
+         y="4200"
+         id="rect3019"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="0"
+         height="0"
+         rx="0"
+         x="3600"
+         y="2400"
+         id="rect3021"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="1200"
+         rx="0"
+         x="3600"
+         y="2400"
+         id="rect3023"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="3600"
+         height="600"
+         rx="0"
+         x="3600"
+         y="3600"
+         id="rect3025"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="1200"
+         rx="0"
+         x="6000"
+         y="2400"
+         id="rect3027"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+      <text
+         x="3825"
+         y="2925"
+         id="text3029"
+         xml:space="preserve"
+         style="font-size:240px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">scons</text>
+      <text
+         x="3825"
+         y="3225"
+         id="text3031"
+         xml:space="preserve"
+         style="font-size:240px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Script</text>
+      <text
+         x="5100"
+         y="4875"
+         id="text3033"
+         xml:space="preserve"
+         style="font-size:240px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Build Engine</text>
+      <text
+         x="4200"
+         y="4875"
+         id="text3035"
+         xml:space="preserve"
+         style="font-size:240px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">SCons</text>
+      <text
+         x="4725"
+         y="4050"
+         id="text3037"
+         xml:space="preserve"
+         style="font-size:240px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">SCons</text>
+      <text
+         x="5625"
+         y="4050"
+         id="text3039"
+         xml:space="preserve"
+         style="font-size:240px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">API</text>
+      <text
+         x="6300"
+         y="2925"
+         id="text3041"
+         xml:space="preserve"
+         style="font-size:240px;font-style:italic;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">other</text>
+      <text
+         x="6150"
+         y="3225"
+         id="text3043"
+         xml:space="preserve"
+         style="font-size:240px;font-style:italic;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">interface</text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/python10/builder.eps b/doc/python10/builder.eps
deleted file mode 100644
index db87afc..0000000
--- a/doc/python10/builder.eps
+++ /dev/null
@@ -1,325 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/builder.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan  2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 668 290
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 290 moveto 0 0 lineto 668 0 lineto 668 290 lineto closepath clip newpath
--53.3 342.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
-/reencdict 12 dict def /ReEncode { reencdict begin
-/newcodesandnames exch def /newfontname exch def /basefontname exch def
-/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
-basefontdict { exch dup /FID ne { dup /Encoding eq
-{ exch dup length array copy newfont 3 1 roll put }
-{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
-newfont /FontName newfontname put newcodesandnames aload pop
-128 1 255 { newfont /Encoding get exch /.notdef put } for
-newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
-newfontname newfont definefont pop end } def
-/isovec [
-8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
-8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
-8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
-8#220 /dotlessi 8#230 /oe 8#231 /OE
-8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
-8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
-8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
-8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
-8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
-8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
-8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
-8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
-8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
-8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
-8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
-8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
-8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
-8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
-8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
-8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
-8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
-8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
-8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
-8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
-8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
-8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
-/Times-Roman /Times-Roman-iso isovec ReEncode
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 2700 1200 m 4500 1200 l 4500 1800 l 2700 1800 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-2925 1575 m
-gs 1 -1 sc (Environment) col0 sh gr
-% Polyline
-n 2700 2400 m 4500 2400 l 4500 3000 l 2700 3000 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-3600 2775 m
-gs 1 -1 sc (BuilderWrapper) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 2700 3600 m 4500 3600 l 4500 4200 l 2700 4200 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-3600 3975 m
-gs 1 -1 sc (BuilderBase) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 8400 3600 m 9900 3600 l 9900 4200 l 8400 4200 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-9150 3975 m
-gs 1 -1 sc (ActionBase) dup sw pop 2 div neg 0 rm  col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-4650 5175 m
-gs 1 -1 sc (MultiStep-) dup sw pop 2 div neg 0 rm  col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-4650 5460 m
-gs 1 -1 sc (Builder) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 3900 4800 m 5400 4800 l 5400 5700 l 3900 5700 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-2550 5175 m
-gs 1 -1 sc (Composite-) dup sw pop 2 div neg 0 rm  col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-2550 5460 m
-gs 1 -1 sc (Builder) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 1800 4800 m 3300 4800 l 3300 5700 l 1800 5700 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-7050 5175 m
-gs 1 -1 sc (Command) dup sw pop 2 div neg 0 rm  col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-7050 5460 m
-gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 6300 4800 m 7800 4800 l 7800 5700 l 6300 5700 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-9150 5460 m
-gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm  col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-9150 5175 m
-gs 1 -1 sc (Function) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 8400 4800 m 9900 4800 l 9900 5700 l 8400 5700 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-11250 5175 m
-gs 1 -1 sc (List) dup sw pop 2 div neg 0 rm  col0 sh gr
-/Times-Roman-iso ff 240.00 scf sf
-11250 5460 m
-gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 10500 4800 m 12000 4800 l 12000 5700 l 10500 5700 l
- cp gs col0 s gr 
-% Polyline
-n 900 2400 m 2100 2400 l 2100 3000 l 900 3000 l
- cp gs col0 s gr 
-/Times-Roman-iso ff 240.00 scf sf
-1500 2775 m
-gs 1 -1 sc (Node) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 3600 4200 m 3525 4350 l 3675 4350 l
- cp gs col0 s gr 
-% Polyline
-n 3150 4800 m 3150 4500 l 4050 4500 l
- 4050 4800 l gs col0 s gr 
-% Polyline
-n 3600 4350 m
- 3600 4500 l gs col0 s gr 
-% Polyline
-n 9150 4200 m 9075 4350 l 9225 4350 l
- cp gs col0 s gr 
-% Polyline
-n 7050 4800 m 7050 4500 l 10950 4500 l
- 10950 4800 l gs col0 s gr 
-% Polyline
-n 9150 4350 m
- 9150 4800 l gs col0 s gr 
-% Polyline
-gs  clippath
-9885 3870 m 9885 3930 l 10036 3930 l 9916 3900 l 10036 3870 l cp
-eoclip
-n 11550 4650 m 11550 3900 l
- 9900 3900 l gs col0 s gr gr
-
-% arrowhead
-n 10036 3870 m 9916 3900 l 10036 3930 l 10036 3870 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-8415 3930 m 8415 3870 l 8264 3870 l 8384 3900 l 8264 3930 l cp
-eoclip
-n 4650 3900 m
- 8400 3900 l gs col0 s gr gr
-
-% arrowhead
-n 8264 3930 m 8384 3900 l 8264 3870 l 8264 3930 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-3930 1785 m 3870 1785 l 3870 1936 l 3900 1816 l 3930 1936 l cp
-eoclip
-n 3900 2250 m
- 3900 1800 l gs col0 s gr gr
-
-% arrowhead
-n 3930 1936 m 3900 1816 l 3870 1936 l 3930 1936 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-3270 2415 m 3330 2415 l 3330 2264 l 3300 2384 l 3270 2264 l cp
-eoclip
-n 3300 1950 m
- 3300 2400 l gs col0 s gr gr
-
-% arrowhead
-n 3270 2264 m 3300 2384 l 3330 2264 l 3270 2264 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-3570 3615 m 3630 3615 l 3630 3464 l 3600 3584 l 3570 3464 l cp
-eoclip
-n 3600 3150 m
- 3600 3600 l gs col0 s gr gr
-
-% arrowhead
-n 3570 3464 m 3600 3584 l 3630 3464 l 3570 3464 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4380 4185 m 4320 4185 l 4320 4336 l 4350 4216 l 4380 4336 l cp
-eoclip
-n 4350 4650 m
- 4350 4200 l gs col0 s gr gr
-
-% arrowhead
-n 4380 4336 m 4350 4216 l 4320 4336 l 4380 4336 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-2880 4185 m 2820 4185 l 2820 4336 l 2850 4216 l 2880 4336 l cp
-eoclip
-n 2850 4650 m
- 2850 4200 l gs col0 s gr gr
-
-% arrowhead
-n 2880 4336 m 2850 4216 l 2820 4336 l 2880 4336 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-2715 3930 m 2715 3870 l 2564 3870 l 2684 3900 l 2564 3930 l cp
-eoclip
-n 1500 3150 m 1500 3900 l
- 2700 3900 l gs col0 s gr gr
-
-% arrowhead
-n 2564 3930 m 2684 3900 l 2564 3870 l 2564 3930 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-n 4650 3900 m 4575 3860 l 4500 3900 l 4575 3940 l
- cp gs col0 s gr 
-% Polyline
-n 1500 3000 m 1460 3075 l 1500 3150 l 1540 3075 l
- cp gs col0 s gr 
-% Polyline
-n 3600 3000 m 3560 3075 l 3600 3150 l 3640 3075 l
- cp gs col0 s gr 
-% Polyline
-n 3300 1800 m 3260 1875 l 3300 1950 l 3340 1875 l
- cp gs col0 s gr 
-% Polyline
-n 3900 2250 m 3860 2325 l 3900 2400 l 3940 2325 l
- cp gs col0 s gr 
-% Polyline
-n 4350 4650 m 4310 4725 l 4350 4800 l 4390 4725 l
- cp gs col0 s gr 
-% Polyline
-n 2850 4650 m 2810 4725 l 2850 4800 l 2890 4725 l
- cp gs col0 s gr 
-% Polyline
-n 11550 4650 m 11510 4725 l 11550 4800 l 11590 4725 l
- cp gs col0 s gr 
-% Polyline
- [60] 0 sd
-n 3600 1200 m
- 3600 900 l gs col0 s gr  [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/copyright.xml b/doc/python10/copyright.xml
index d141fc6..6af924f 100644
--- a/doc/python10/copyright.xml
+++ b/doc/python10/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -30,3 +40,5 @@
 
  </para>
 </blockquote>
+
+</legalnotice>
diff --git a/doc/python10/design.xml b/doc/python10/design.xml
index 0dd5faa..e533c21 100644
--- a/doc/python10/design.xml
+++ b/doc/python10/design.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-design"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Architecture</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   The &SCons; architecture consists of three layers:
@@ -6,16 +43,11 @@
 
 <mediaobject>
   <imageobject>
-    <imagedata fileref="arch" format="eps" align="center"/>
-  </imageobject>
-  <imageobject>
-    <imagedata fileref="arch.jpg" format="jpg" align="center"/>
+    <imagedata fileref="arch.svg" align="center"/>
   </imageobject>
-  <!--  PDF files?
   <imageobject>
-    <imagedata fileref="arch.pdf" align="center"/>
+    <imagedata fileref="arch.jpg" align="center"/>
   </imageobject>
-  -->
 </mediaobject>
 
 <itemizedlist>
@@ -166,16 +198,11 @@
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="node" format="eps" align="center"/>
-      </imageobject>
-      <imageobject>
-        <imagedata fileref="node.jpg" format="jpg" align="center"/>
+        <imagedata fileref="node.svg" align="center"/>
       </imageobject>
-      <!--  PDF files?
       <imageobject>
-        <imagedata fileref="node.pdf" align="center"/>
+        <imagedata fileref="node.jpg" align="center"/>
       </imageobject>
-      -->
     </mediaobject>
 
     <para>
@@ -230,16 +257,11 @@
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="scanner" format="eps" align="center"/>
-      </imageobject>
-      <imageobject>
-        <imagedata fileref="scanner.jpg" format="jpg" align="center"/>
+        <imagedata fileref="scanner.svg" align="center"/>
       </imageobject>
-      <!--  PDF files?
       <imageobject>
-        <imagedata fileref="scanner.pdf" align="center"/>
+        <imagedata fileref="scanner.jpg" align="center"/>
       </imageobject>
-      -->
     </mediaobject>
 
     <para>
@@ -272,16 +294,11 @@
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="sig" format="eps" align="center"/>
+        <imagedata fileref="sig.svg" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="sig.jpg" format="jpg" align="center"/>
+        <imagedata fileref="sig.jpg" align="center"/>
       </imageobject>
-      <!--  PDF files?
-      <imageobject>
-        <imagedata fileref="sig.pdf" align="center"/>
-      </imageobject>
-      -->
     </mediaobject>
 
     <para>
@@ -328,16 +345,11 @@
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="builder" format="eps" align="center"/>
-      </imageobject>
-      <imageobject>
-        <imagedata fileref="builder.jpg" format="jpg" align="center"/>
+        <imagedata fileref="builder.svg" align="center"/>
       </imageobject>
-      <!--  PDF files?
       <imageobject>
-        <imagedata fileref="builder.pdf" align="center"/>
+        <imagedata fileref="builder.jpg" align="center"/>
       </imageobject>
-      -->
     </mediaobject>
 
     <para>
@@ -391,16 +403,11 @@
 
     <mediaobject>
       <imageobject>
-        <imagedata fileref="job-task" format="eps" align="center"/>
+        <imagedata fileref="job-task.svg" align="center"/>
       </imageobject>
       <imageobject>
-        <imagedata fileref="job-task.jpg" format="jpg" align="center"/>
+        <imagedata fileref="job-task.jpg" align="center"/>
       </imageobject>
-      <!--  PDF files?
-      <imageobject>
-        <imagedata fileref="job-task.pdf" align="center"/>
-      </imageobject>
-      -->
     </mediaobject>
 
     <para>
@@ -547,7 +554,7 @@
       file, a library, etc. A &Builder; object is associated with a
       file through an associated &consenv; method and later invoked to
       actually build the file. The &Builder; object will typically use
-      construction variables (such as &CCFLAGS;, &LIBPATH;) to influence
+      construction variables (such as <literal>CCFLAGS</literal>, <literal>LIBPATH</literal>) to influence
       the specific build execution.
 
     </para>
@@ -629,7 +636,7 @@
     <para>
 
       &Builder; objects are associated with a &consenv; through a
-      &consvar; named &BUILDERS;, a list of the &Builder; objects that
+      &consvar; named <literal>BUILDERS</literal>, a list of the &Builder; objects that
       will be available for execution through the &consenv;:
 
     </para>
@@ -678,7 +685,7 @@
     <para>
 
       &Scanner; objects are associated with a &consenv; through a
-      &consvar; named &SCANNERS;, a list of the &Scanner; objects that
+      &consvar; named <literal>SCANNERS</literal>, a list of the &Scanner; objects that
       will be available through the &consenv;:
 
     </para>
@@ -896,3 +903,5 @@
   </para>
 
 </section>
+
+</section>
diff --git a/doc/python10/future.xml b/doc/python10/future.xml
index 272d508..b883fe4 100644
--- a/doc/python10/future.xml
+++ b/doc/python10/future.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-future"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Future Directions</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   There are a number of things we would like to do to continue to
@@ -168,3 +205,5 @@
   </para>
 
 </section>
+
+</section>
diff --git a/doc/python10/install.xml b/doc/python10/install.xml
index d150beb..0e5544e 100644
--- a/doc/python10/install.xml
+++ b/doc/python10/install.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-install"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Installation</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   Initial installation of a new utility provides the first, lasting
@@ -177,3 +214,5 @@
   </para>
 
 </section>
+
+</section>
diff --git a/doc/python10/intro.xml b/doc/python10/intro.xml
index d3057be..7878342 100644
--- a/doc/python10/intro.xml
+++ b/doc/python10/intro.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-intro"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Introduction</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   More than twenty years after its creation, the classic UNIX &Make;
@@ -210,3 +247,5 @@
   </para>
 
 </section>
+
+</section>
diff --git a/doc/python10/job-task.eps b/doc/python10/job-task.eps
deleted file mode 100644
index b3eeaff..0000000
--- a/doc/python10/job-task.eps
+++ /dev/null
@@ -1,238 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/job-task.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan  2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 416 236
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 236 moveto 0 0 lineto 416 0 lineto 416 236 lineto closepath clip newpath
--35.3 342.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 4200 3900 m 5100 3900 l 5100 4500 l 4200 4500 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-4650 4275 m
-gs 1 -1 sc (Task) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 4200 5100 m 5100 5100 l 5100 5700 l 4200 5700 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-4650 5475 m
-gs 1 -1 sc (Node) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 6300 2100 m 7200 2100 l 7200 2700 l 6300 2700 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-6750 2475 m
-gs 1 -1 sc (Sig) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 6300 3300 m 7500 3300 l 7500 3900 l 6300 3900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-6900 3675 m
-gs 1 -1 sc (Walker) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 4200 2100 m 5700 2100 l 5700 2700 l 4200 2700 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-4950 2475 m
-gs 1 -1 sc (TaskMaster) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 2400 3300 m 3600 3300 l 3600 3900 l 2400 3900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-3000 3675 m
-gs 1 -1 sc (Parallel) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 600 3300 m 1800 3300 l 1800 3900 l 600 3900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-1200 3675 m
-gs 1 -1 sc (Serial) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 1200 2100 m 3000 2100 l 3000 2700 l 1200 2700 l
- cp gs col0 s gr 
-/Times-Roman ff 255.00 scf sf
-2099 2475 m
-gs 1 -1 sc (Jobs) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 2700 2700 m 2660 2775 l 2700 2850 l 2740 2775 l
- cp gs col0 s gr 
-% Polyline
-n 5700 2400 m 5775 2440 l 5850 2400 l 5775 2360 l
- cp gs col0 s gr 
-% Polyline
-n 5400 2700 m 5360 2775 l 5400 2850 l 5440 2775 l
- cp gs col0 s gr 
-% Polyline
-n 4650 2700 m 4610 2775 l 4650 2850 l 4690 2775 l
- cp gs col0 s gr 
-% Polyline
-n 1500 2700 m 1460 2775 l 1500 2850 l 1540 2775 l
- cp gs col0 s gr 
-% Polyline
-n 4650 4500 m 4610 4575 l 4650 4650 l 4690 4575 l
- cp gs col0 s gr 
-% Polyline
-gs  clippath
-1470 3315 m 1530 3315 l 1530 3164 l 1500 3284 l 1470 3164 l cp
-eoclip
-n 1500 2850 m
- 1500 3300 l gs col0 s gr gr
-
-% arrowhead
-n 1470 3164 m 1500 3284 l 1530 3164 l 1470 3164 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-2670 3315 m 2730 3315 l 2730 3164 l 2700 3284 l 2670 3164 l cp
-eoclip
-n 2700 2850 m
- 2700 3300 l gs col0 s gr gr
-
-% arrowhead
-n 2670 3164 m 2700 3284 l 2730 3164 l 2670 3164 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4620 3915 m 4680 3915 l 4680 3764 l 4650 3884 l 4620 3764 l cp
-eoclip
-n 4650 2850 m
- 4650 3900 l gs col0 s gr gr
-
-% arrowhead
-n 4620 3764 m 4650 3884 l 4680 3764 l 4620 3764 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4620 5115 m 4680 5115 l 4680 4964 l 4650 5084 l 4620 4964 l cp
-eoclip
-n 4650 4650 m
- 4650 5100 l gs col0 s gr gr
-
-% arrowhead
-n 4620 4964 m 4650 5084 l 4680 4964 l 4620 4964 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-6315 3630 m 6315 3570 l 6164 3570 l 6284 3600 l 6164 3630 l cp
-eoclip
-n 5400 2850 m 5400 3600 l
- 6300 3600 l gs col0 s gr gr
-
-% arrowhead
-n 6164 3630 m 6284 3600 l 6164 3570 l 6164 3630 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-6315 2430 m 6315 2370 l 6164 2370 l 6284 2400 l 6164 2430 l cp
-eoclip
-n 5850 2400 m
- 6300 2400 l gs col0 s gr gr
-
-% arrowhead
-n 6164 2430 m 6284 2400 l 6164 2370 l 6164 2430 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-n 3000 2400 m 3075 2440 l 3150 2400 l 3075 2360 l
- cp gs col0 s gr 
-% Polyline
-gs  clippath
-4215 2430 m 4215 2370 l 4064 2370 l 4184 2400 l 4064 2430 l cp
-eoclip
-n 3150 2400 m
- 4200 2400 l gs col0 s gr gr
-
-% arrowhead
-n 4064 2430 m 4184 2400 l 4064 2370 l 4064 2430 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
- [60] 0 sd
-n 2100 2100 m
- 2100 1800 l gs col0 s gr  [] 0 sd
-% Polyline
- [60] 0 sd
-n 4950 2100 m
- 4950 1800 l gs col0 s gr  [] 0 sd
-% Polyline
- [60] 0 sd
-n 6750 2100 m
- 6750 1800 l gs col0 s gr  [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/job-task.svg b/doc/python10/job-task.svg
new file mode 100644
index 0000000..dc5fc20
--- /dev/null
+++ b/doc/python10/job-task.svg
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.07538995,0,0,0.07538995,69.670703,249.64987)"
+       id="g3223"
+       style="fill:none;stroke-width:0.025in">
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="4200"
+         y="3900"
+         id="rect3225"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="4200"
+         y="5100"
+         id="rect3227"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="6300"
+         y="2100"
+         id="rect3229"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="6300"
+         y="3300"
+         id="rect3231"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1500"
+         height="600"
+         rx="0"
+         x="4200"
+         y="2100"
+         id="rect3233"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="2400"
+         y="3300"
+         id="rect3235"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="600"
+         y="3300"
+         id="rect3237"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="1200"
+         y="2100"
+         id="rect3239"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="2740,2775 2700,2700 2700,2700 2660,2775 2700,2850 "
+         id="polygon3241"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="5775,2360 5700,2400 5700,2400 5775,2440 5850,2400 "
+         id="polygon3243"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="5440,2775 5400,2700 5400,2700 5360,2775 5400,2850 "
+         id="polygon3245"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="4690,2775 4650,2700 4650,2700 4610,2775 4650,2850 "
+         id="polygon3247"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="1540,2775 1500,2700 1500,2700 1460,2775 1500,2850 "
+         id="polygon3249"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="4690,4575 4650,4500 4650,4500 4610,4575 4650,4650 "
+         id="polygon3251"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3253"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="1500,2850 1500,3180 " />
+      <polygon
+         points="1470,3179 1470,3179 1500,3299 1530,3179 "
+         id="polygon3255"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3257"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="2700,2850 2700,3180 " />
+      <polygon
+         points="2670,3179 2670,3179 2700,3299 2730,3179 "
+         id="polygon3259"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3261"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="4650,2850 4650,3780 " />
+      <polygon
+         points="4620,3779 4620,3779 4650,3899 4680,3779 "
+         id="polygon3263"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3265"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="4650,4650 4650,4980 " />
+      <polygon
+         points="4620,4979 4620,4979 4650,5099 4680,4979 "
+         id="polygon3267"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3269"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="5400,2850 5400,3600 6180,3600 " />
+      <polygon
+         points="6179,3630 6179,3630 6299,3600 6179,3570 "
+         id="polygon3271"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3273"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="5850,2400 6180,2400 " />
+      <polygon
+         points="6179,2430 6179,2430 6299,2400 6179,2370 "
+         id="polygon3275"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polygon
+         points="3075,2360 3000,2400 3000,2400 3075,2440 3150,2400 "
+         id="polygon3277"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3279"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3150,2400 4080,2400 " />
+      <polygon
+         points="4079,2430 4079,2430 4199,2400 4079,2370 "
+         id="polygon3281"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3283"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="2100,2100 2100,1800 " />
+      <polyline
+         id="polyline3285"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="4950,2100 4950,1800 " />
+      <polyline
+         id="polyline3287"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="6750,2100 6750,1800 " />
+      <text
+         x="4650"
+         y="4275"
+         id="text3289"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Task</text>
+      <text
+         x="4650"
+         y="5475"
+         id="text3291"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Node</text>
+      <text
+         x="6750"
+         y="2475"
+         id="text3293"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Sig</text>
+      <text
+         x="6900"
+         y="3675"
+         id="text3295"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Walker</text>
+      <text
+         x="4950"
+         y="2475"
+         id="text3297"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">TaskMaster</text>
+      <text
+         x="3000"
+         y="3675"
+         id="text3299"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Parallel</text>
+      <text
+         x="1200"
+         y="3675"
+         id="text3301"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Serial</text>
+      <text
+         x="2099"
+         y="2475"
+         id="text3303"
+         xml:space="preserve"
+         style="font-size:204px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Jobs</text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/python10/main.xml b/doc/python10/main.xml
index e061b90..c525bf1 100644
--- a/doc/python10/main.xml
+++ b/doc/python10/main.xml
@@ -1,8 +1,19 @@
 <?xml version="1.0"?>
 
+<!DOCTYPE sconsdoc [
+
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+
+]>
+
+<article xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+         
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -24,26 +35,7 @@
   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 -->
-
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
-
-    <!ENTITY % scons SYSTEM "scons.mod">
-    %scons;
-
-    <!ENTITY abstract SYSTEM "abstract.xml">
-    <!ENTITY acks SYSTEM "acks.xml">
-    <!ENTITY copyright SYSTEM "copyright.xml">
-    <!ENTITY design SYSTEM "design.xml">
-    <!ENTITY future SYSTEM "future.xml">
-    <!ENTITY install SYSTEM "install.xml">
-    <!ENTITY intro SYSTEM "intro.xml">
-    <!ENTITY process SYSTEM "process.xml">
-
-]>
-
-<article>
+         
   <articleinfo>
     <title>SCons Design and Implementation</title>
 
@@ -81,56 +73,21 @@
 
   </articleinfo>
 
-  <abstract>
-    &abstract;
-  </abstract>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="abstract.xml"/>
 
-  <section id="sect-intro">
-    <title>Introduction</title>
-    &intro;
-  </section>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intro.xml"/>
 
-  <section id="sect-design">
-    <title>Architecture</title>
-    &design;
-  </section>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="design.xml"/>
 
-  <section id="sect-install">
-    <title>Installation</title>
-    &install;
-  </section>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="install.xml"/>
 
-  <section id="sect-process">
-    <title>Development Process</title>
-    &process;
-  </section>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="process.xml"/>
 
-  <section id="sect-future">
-    <title>Future Directions</title>
-    &future;
-  </section>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="future.xml"/>
 
-  <section id="sect-summary">
-    <title>Summary</title>
-    <para>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="summary.xml"/>
 
-      This paper has introduced &SCons;, a next-generation build tool
-      with a modular, embeddable architecture and a direct Python
-      interface. &SCons; has a global view of the dependencies in a source
-      tree, uses MD5 signatures to decide if derived files are out of date,
-      and automatically scans files for dependencies, all of which make &SCons;
-      builds exceptionally reliable. The &SCons; development methodology has
-      been described, notable for its emphasis on automated regression
-      testing to ensure a robust and reliable tool from day one. Several
-      future directions for &SCons; have also been discussed.
-
-    </para>
-  </section>
-
-  <section id="sect-acks">
-    <title>Acknowledgements</title>
-    &acks;
-  </section>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acks.xml"/>
 
   <!--
   <section id="sect-refs">
diff --git a/doc/python10/node.eps b/doc/python10/node.eps
deleted file mode 100644
index 995235d..0000000
--- a/doc/python10/node.eps
+++ /dev/null
@@ -1,351 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/node.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan  2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 452 362
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 362 moveto 0 0 lineto 452 0 lineto 452 362 lineto closepath clip newpath
-0.7 414.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 2700 1200 m 4500 1200 l 4500 1800 l 2700 1800 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-2925 1575 m
-gs 1 -1 sc (Environment) col0 sh gr
-% Polyline
-n 2700 3600 m 4500 3600 l 4500 4200 l 2700 4200 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-3375 3975 m
-gs 1 -1 sc (Node) col0 sh gr
-% Polyline
-n 5700 1800 m 6900 1800 l 6900 2400 l 5700 2400 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-5925 2175 m
-gs 1 -1 sc (Walker) col0 sh gr
-% Polyline
-n 2100 2400 m 3300 2400 l 3300 3000 l 2100 3000 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-2325 2775 m
-gs 1 -1 sc (Builder) col0 sh gr
-% Polyline
-n 3900 2400 m 5100 2400 l 5100 3000 l 3900 3000 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-4125 2775 m
-gs 1 -1 sc (Scanner) col0 sh gr
-% Polyline
-n 2400 6300 m 3300 6300 l 3300 6900 l 2400 6900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-2700 6675 m
-gs 1 -1 sc (Dir) col0 sh gr
-% Polyline
-n 0 6300 m 900 6300 l 900 6900 l 0 6900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-150 6675 m
-gs 1 -1 sc (Entry) col0 sh gr
-% Polyline
-n 1200 6300 m 2100 6300 l 2100 6900 l 1200 6900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-1425 6675 m
-gs 1 -1 sc (File) col0 sh gr
-% Polyline
-n 1050 5100 m 2250 5100 l 2250 5700 l 1050 5700 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-1200 5475 m
-gs 1 -1 sc (Node.FS) col0 sh gr
-% Polyline
-n 1650 5700 m 1575 5850 l 1725 5850 l
- cp gs col0 s gr 
-% Polyline
-n 450 6300 m 450 6000 l 2700 6000 l
- 2700 6300 l gs col0 s gr 
-% Polyline
-n 1650 6300 m
- 1650 5850 l gs col0 s gr 
-% Polyline
- [60] 0 sd
-n 5100 6300 m 6300 6300 l 6300 6900 l 5100 6900 l
- cp gs col0 s gr  [] 0 sd
-/Times-Roman ff 240.00 scf sf
-5325 6675 m
-gs 1 -1 sc (Record) col0 sh gr
-% Polyline
- [60] 0 sd
-n 6600 6300 m 7500 6300 l 7500 6900 l 6600 6900 l
- cp gs col0 s gr  [] 0 sd
-/Times-Roman ff 240.00 scf sf
-6750 6675 m
-gs 1 -1 sc (Field) col0 sh gr
-% Polyline
- [60] 0 sd
-n 4950 5100 m 6150 5100 l 6150 5700 l 4950 5700 l
- cp gs col0 s gr  [] 0 sd
-/Times-Roman ff 240.00 scf sf
-5100 5475 m
-gs 1 -1 sc (Node.DB) col0 sh gr
-% Polyline
-n 5550 5700 m 5475 5850 l 5625 5850 l
- cp gs col0 s gr 
-% Polyline
- [60] 0 sd
-n 4350 6300 m 4350 6000 l 7050 6000 l
- 7050 6300 l gs col0 s gr  [] 0 sd
-% Polyline
- [60] 0 sd
-n 5550 5850 m
- 5550 6300 l gs col0 s gr  [] 0 sd
-% Polyline
- [60] 0 sd
-n 3900 6300 m 4800 6300 l 4800 6900 l 3900 6900 l
- cp gs col0 s gr  [] 0 sd
-/Times-Roman ff 240.00 scf sf
-4050 6675 m
-gs 1 -1 sc (Table) col0 sh gr
-% Polyline
-n 5700 3000 m 6900 3000 l 6900 3600 l 5700 3600 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-5850 3375 m
-gs 1 -1 sc (Wrapper) col0 sh gr
-% Polyline
-n 900 1200 m 1800 1200 l 1800 1800 l 900 1800 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-1200 1575 m
-gs 1 -1 sc (FS) col0 sh gr
-% Polyline
-n 3600 4200 m 3525 4350 l 3675 4350 l
- cp gs col0 s gr 
-% Polyline
-n 1800 5100 m 1800 4800 l 5550 4800 l
- 5550 5100 l gs col0 s gr 
-% Polyline
-n 3600 4800 m
- 3600 4350 l gs col0 s gr 
-% Polyline
-n 4200 1800 m 4160 1875 l 4200 1950 l 4240 1875 l
- cp gs col0 s gr 
-% Polyline
-n 3000 6150 m 2960 6225 l 3000 6300 l 3040 6225 l
- cp gs col0 s gr 
-% Polyline
-n 6300 3600 m 6260 3675 l 6300 3750 l 6340 3675 l
- cp gs col0 s gr 
-% Polyline
-n 6300 2400 m 6260 2475 l 6300 2550 l 6340 2475 l
- cp gs col0 s gr 
-% Polyline
-n 3000 4200 m 2960 4275 l 3000 4350 l 3040 4275 l
- cp gs col0 s gr 
-% Polyline
-n 4200 3450 m 4160 3525 l 4200 3600 l 4240 3525 l
- cp gs col0 s gr 
-% Polyline
-n 3000 3450 m 2960 3525 l 3000 3600 l 3040 3525 l
- cp gs col0 s gr 
-% Polyline
-gs  clippath
-2235 5370 m 2235 5430 l 2386 5430 l 2266 5400 l 2386 5370 l cp
-eoclip
-n 3000 6150 m 3000 5400 l
- 2250 5400 l gs col0 s gr gr
-
-% arrowhead
-n 2386 5370 m 2266 5400 l 2386 5430 l 2386 5370 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-2715 3930 m 2715 3870 l 2564 3870 l 2684 3900 l 2564 3930 l cp
-eoclip
-n 3000 4350 m 3000 4500 l 1800 4500 l 1800 3900 l
- 2700 3900 l gs col0 s gr gr
-
-% arrowhead
-n 2564 3930 m 2684 3900 l 2564 3870 l 2564 3930 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4485 3870 m 4485 3930 l 4636 3930 l 4516 3900 l 4636 3870 l cp
-eoclip
-n 6300 3750 m 6300 3900 l
- 4500 3900 l gs col0 s gr gr
-
-% arrowhead
-n 4636 3870 m 4516 3900 l 4636 3930 l 4636 3870 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4230 2985 m 4170 2985 l 4170 3136 l 4200 3016 l 4230 3136 l cp
-eoclip
-n 4200 3450 m
- 4200 3000 l gs col0 s gr gr
-
-% arrowhead
-n 4230 3136 m 4200 3016 l 4170 3136 l 4230 3136 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-3030 2985 m 2970 2985 l 2970 3136 l 3000 3016 l 3030 3136 l cp
-eoclip
-n 3000 3450 m
- 3000 3000 l gs col0 s gr gr
-
-% arrowhead
-n 3030 3136 m 3000 3016 l 2970 3136 l 3030 3136 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-n 3000 1800 m 2960 1875 l 3000 1950 l 3040 1875 l
- cp gs col0 s gr 
-% Polyline
-gs  clippath
-2970 2415 m 3030 2415 l 3030 2264 l 3000 2384 l 2970 2264 l cp
-eoclip
-n 3000 1950 m
- 3000 2400 l gs col0 s gr gr
-
-% arrowhead
-n 2970 2264 m 3000 2384 l 3030 2264 l 2970 2264 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4170 2415 m 4230 2415 l 4230 2264 l 4200 2384 l 4170 2264 l cp
-eoclip
-n 4200 1950 m
- 4200 2400 l gs col0 s gr gr
-
-% arrowhead
-n 4170 2264 m 4200 2384 l 4230 2264 l 4170 2264 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-6270 3015 m 6330 3015 l 6330 2864 l 6300 2984 l 6270 2864 l cp
-eoclip
-n 6300 2550 m
- 6300 3000 l gs col0 s gr gr
-
-% arrowhead
-n 6270 2864 m 6300 2984 l 6330 2864 l 6270 2864 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-4785 6570 m 4785 6630 l 4936 6630 l 4816 6600 l 4936 6570 l cp
-eoclip
-n 5100 6600 m
- 4800 6600 l gs col0 s gr gr
-
-% arrowhead
-n 4936 6570 m 4816 6600 l 4936 6630 l 4936 6570 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-6285 6570 m 6285 6630 l 6436 6630 l 6316 6600 l 6436 6570 l cp
-eoclip
-n 6600 6600 m
- 6300 6600 l gs col0 s gr gr
-
-% arrowhead
-n 6436 6570 m 6316 6600 l 6436 6630 l 6436 6570 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-n 1350 1800 m 1310 1875 l 1350 1950 l 1390 1875 l
- cp gs col0 s gr 
-% Polyline
-gs  clippath
-1320 5115 m 1380 5115 l 1380 4964 l 1350 5084 l 1320 4964 l cp
-eoclip
-n 1350 1950 m
- 1350 5100 l gs col0 s gr gr
-
-% arrowhead
-n 1320 4964 m 1350 5084 l 1380 4964 l 1320 4964 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
- [60] 0 sd
-n 1350 1200 m
- 1350 900 l gs col0 s gr  [] 0 sd
-% Polyline
- [60] 0 sd
-n 3600 1200 m
- 3600 900 l gs col0 s gr  [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/node.svg b/doc/python10/node.svg
new file mode 100644
index 0000000..66b6c8a
--- /dev/null
+++ b/doc/python10/node.svg
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.0747012,0,0,0.0747012,94.8705,241.0275)"
+       id="g3392"
+       style="fill:none;stroke-width:0.025in">
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="2700"
+         y="1200"
+         id="rect3394"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="2700"
+         y="3600"
+         id="rect3396"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="5700"
+         y="1800"
+         id="rect3398"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="2100"
+         y="2400"
+         id="rect3400"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="3900"
+         y="2400"
+         id="rect3402"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="2400"
+         y="6300"
+         id="rect3404"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="0"
+         y="6300"
+         id="rect3406"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="1200"
+         y="6300"
+         id="rect3408"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="1050"
+         y="5100"
+         id="rect3410"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="1650,5700 1650,5700 1575,5850 1725,5850 "
+         id="polygon3412"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3414"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="450,6300 450,6000 2700,6000 2700,6300 " />
+      <polyline
+         id="polyline3416"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="1650,6300 1650,5850 " />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="5100"
+         y="6300"
+         id="rect3418"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="6600"
+         y="6300"
+         id="rect3420"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="4950"
+         y="5100"
+         id="rect3422"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+      <polygon
+         points="5550,5700 5550,5700 5475,5850 5625,5850 "
+         id="polygon3424"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3426"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="4350,6300 4350,6000 7050,6000 7050,6300 " />
+      <polyline
+         id="polyline3428"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="5550,5850 5550,6300 " />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="3900"
+         y="6300"
+         id="rect3430"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="5700"
+         y="3000"
+         id="rect3432"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="900"
+         y="1200"
+         id="rect3434"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="3600,4200 3600,4200 3525,4350 3675,4350 "
+         id="polygon3436"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3438"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="1800,5100 1800,4800 5550,4800 5550,5100 " />
+      <polyline
+         id="polyline3440"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3600,4800 3600,4350 " />
+      <polygon
+         points="4240,1875 4200,1800 4200,1800 4160,1875 4200,1950 "
+         id="polygon3442"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="3040,6225 3000,6150 3000,6150 2960,6225 3000,6300 "
+         id="polygon3444"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="6340,3675 6300,3600 6300,3600 6260,3675 6300,3750 "
+         id="polygon3446"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="6340,2475 6300,2400 6300,2400 6260,2475 6300,2550 "
+         id="polygon3448"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="3040,4275 3000,4200 3000,4200 2960,4275 3000,4350 "
+         id="polygon3450"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="4240,3525 4200,3450 4200,3450 4160,3525 4200,3600 "
+         id="polygon3452"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="3040,3525 3000,3450 3000,3450 2960,3525 3000,3600 "
+         id="polygon3454"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3456"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3000,6150 3000,5400 2369,5400 " />
+      <polygon
+         points="2371,5370 2371,5370 2251,5400 2371,5430 "
+         id="polygon3458"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3460"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3000,4350 3000,4500 1800,4500 1800,3900 2580,3900 " />
+      <polygon
+         points="2579,3930 2579,3930 2699,3900 2579,3870 "
+         id="polygon3462"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3464"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="6300,3750 6300,3900 4619,3900 " />
+      <polygon
+         points="4621,3870 4621,3870 4501,3900 4621,3930 "
+         id="polygon3466"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3468"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="4200,3450 4200,3119 " />
+      <polygon
+         points="4230,3121 4230,3121 4200,3001 4170,3121 "
+         id="polygon3470"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3472"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3000,3450 3000,3119 " />
+      <polygon
+         points="3030,3121 3030,3121 3000,3001 2970,3121 "
+         id="polygon3474"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polygon
+         points="3040,1875 3000,1800 3000,1800 2960,1875 3000,1950 "
+         id="polygon3476"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3478"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3000,1950 3000,2280 " />
+      <polygon
+         points="2970,2279 2970,2279 3000,2399 3030,2279 "
+         id="polygon3480"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3482"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="4200,1950 4200,2280 " />
+      <polygon
+         points="4170,2279 4170,2279 4200,2399 4230,2279 "
+         id="polygon3484"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3486"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="6300,2550 6300,2880 " />
+      <polygon
+         points="6270,2879 6270,2879 6300,2999 6330,2879 "
+         id="polygon3488"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3490"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="5100,6600 4919,6600 " />
+      <polygon
+         points="4921,6570 4921,6570 4801,6600 4921,6630 "
+         id="polygon3492"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3494"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="6600,6600 6419,6600 " />
+      <polygon
+         points="6421,6570 6421,6570 6301,6600 6421,6630 "
+         id="polygon3496"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polygon
+         points="1390,1875 1350,1800 1350,1800 1310,1875 1350,1950 "
+         id="polygon3498"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3500"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="1350,1950 1350,4980 " />
+      <polygon
+         points="1320,4979 1320,4979 1350,5099 1380,4979 "
+         id="polygon3502"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3504"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="1350,1200 1350,900 " />
+      <polyline
+         id="polyline3506"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="3600,1200 3600,900 " />
+      <text
+         x="2925"
+         y="1575"
+         id="text3508"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Environment</text>
+      <text
+         x="3375"
+         y="3975"
+         id="text3510"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node</text>
+      <text
+         x="5925"
+         y="2175"
+         id="text3512"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Walker</text>
+      <text
+         x="2325"
+         y="2775"
+         id="text3514"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Builder</text>
+      <text
+         x="4125"
+         y="2775"
+         id="text3516"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Scanner</text>
+      <text
+         x="2700"
+         y="6675"
+         id="text3518"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Dir</text>
+      <text
+         x="150"
+         y="6675"
+         id="text3520"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Entry</text>
+      <text
+         x="1425"
+         y="6675"
+         id="text3522"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">File</text>
+      <text
+         x="1200"
+         y="5475"
+         id="text3524"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node.FS</text>
+      <text
+         x="5325"
+         y="6675"
+         id="text3526"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Record</text>
+      <text
+         x="6750"
+         y="6675"
+         id="text3528"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Field</text>
+      <text
+         x="5100"
+         y="5475"
+         id="text3530"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node.DB</text>
+      <text
+         x="4050"
+         y="6675"
+         id="text3532"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Table</text>
+      <text
+         x="5850"
+         y="3375"
+         id="text3534"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Wrapper</text>
+      <text
+         x="1200"
+         y="1575"
+         id="text3536"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">FS</text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/python10/process.xml b/doc/python10/process.xml
index 4ff0ab1..a754bbd 100644
--- a/doc/python10/process.xml
+++ b/doc/python10/process.xml
@@ -1,3 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-process"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Development Process</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
 <para>
 
   The &SCons; project has paid particular attention from day one to the
@@ -351,3 +388,5 @@
   </para>
 
 </section>
+
+</section>
diff --git a/doc/python10/scanner.eps b/doc/python10/scanner.eps
deleted file mode 100644
index 35614f8..0000000
--- a/doc/python10/scanner.eps
+++ /dev/null
@@ -1,168 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/scanner.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan  2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 398 200
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 200 moveto 0 0 lineto 398 0 lineto 398 200 lineto closepath clip newpath
--17.3 360.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 2700 5400 m 4500 5400 l 4500 6000 l 2700 6000 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-3000 5775 m
-gs 1 -1 sc (ProgScanner) col0 sh gr
-% Polyline
-n 2700 4200 m 4500 4200 l 4500 4800 l 2700 4800 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-3225 4575 m
-gs 1 -1 sc (Scanner) col0 sh gr
-% Polyline
-n 2700 3000 m 4500 3000 l 4500 3600 l 2700 3600 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-2925 3375 m
-gs 1 -1 sc (Environment) col0 sh gr
-% Polyline
- [60] 0 sd
-n 5100 5400 m 6900 5400 l 6900 6000 l 5100 6000 l
- cp gs col0 s gr  [] 0 sd
-/Times-Roman ff 240.00 scf sf
-5400 5775 m
-gs 1 -1 sc (JavaScanner) col0 sh gr
-% Polyline
-n 300 5400 m 2100 5400 l 2100 6000 l 300 6000 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-750 5775 m
-gs 1 -1 sc (CScanner) col0 sh gr
-% Polyline
-n 600 3300 m 1500 3300 l 1500 3900 l 600 3900 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-825 3675 m
-gs 1 -1 sc (Node) col0 sh gr
-% Polyline
-n 1200 5400 m 1200 5100 l 6000 5100 l
- 6000 5400 l gs col0 s gr 
-% Polyline
-n 3600 4950 m
- 3600 5400 l gs col0 s gr 
-% Polyline
-n 3600 4800 m 3525 4950 l 3675 4950 l
- cp gs col0 s gr 
-% Polyline
-n 3600 3600 m 3560 3675 l 3600 3750 l 3640 3675 l
- cp gs col0 s gr 
-% Polyline
-n 1050 3900 m 1010 3975 l 1050 4050 l 1090 3975 l
- cp gs col0 s gr 
-% Polyline
-gs  clippath
-2715 4530 m 2715 4470 l 2564 4470 l 2684 4500 l 2564 4530 l cp
-eoclip
-n 1050 4050 m 1050 4500 l
- 2700 4500 l gs col0 s gr gr
-
-% arrowhead
-n 2564 4530 m 2684 4500 l 2564 4470 l 2564 4530 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
-gs  clippath
-3570 4215 m 3630 4215 l 3630 4064 l 3600 4184 l 3570 4064 l cp
-eoclip
-n 3600 3750 m
- 3600 4200 l gs col0 s gr gr
-
-% arrowhead
-n 3570 4064 m 3600 4184 l 3630 4064 l 3570 4064 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
- [60] 0 sd
-n 3600 3000 m
- 3600 2700 l gs col0 s gr  [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/scanner.svg b/doc/python10/scanner.svg
new file mode 100644
index 0000000..6fcb0e3
--- /dev/null
+++ b/doc/python10/scanner.svg
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.07472826,0,0,0.07472826,105.97826,207.29425)"
+       id="g3657"
+       style="fill:none;stroke-width:0.025in">
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="2700"
+         y="5400"
+         id="rect3659"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="2700"
+         y="4200"
+         id="rect3661"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="2700"
+         y="3000"
+         id="rect3663"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="5100"
+         y="5400"
+         id="rect3665"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40" />
+      <rect
+         width="1800"
+         height="600"
+         rx="0"
+         x="300"
+         y="5400"
+         id="rect3667"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="900"
+         height="600"
+         rx="0"
+         x="600"
+         y="3300"
+         id="rect3669"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3671"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="1200,5400 1200,5100 6000,5100 6000,5400 " />
+      <polyline
+         id="polyline3673"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3600,4950 3600,5400 " />
+      <polygon
+         points="3600,4800 3600,4800 3525,4950 3675,4950 "
+         id="polygon3675"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="3640,3675 3600,3600 3600,3600 3560,3675 3600,3750 "
+         id="polygon3677"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="1090,3975 1050,3900 1050,3900 1010,3975 1050,4050 "
+         id="polygon3679"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3681"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="1050,4050 1050,4500 2580,4500 " />
+      <polygon
+         points="2579,4530 2579,4530 2699,4500 2579,4470 "
+         id="polygon3683"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3685"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3600,3750 3600,4080 " />
+      <polygon
+         points="3570,4079 3570,4079 3600,4199 3630,4079 "
+         id="polygon3687"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3689"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="3600,3000 3600,2700 " />
+      <text
+         x="3000"
+         y="5775"
+         id="text3691"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">ProgScanner</text>
+      <text
+         x="3225"
+         y="4575"
+         id="text3693"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Scanner</text>
+      <text
+         x="2925"
+         y="3375"
+         id="text3695"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Environment</text>
+      <text
+         x="5400"
+         y="5775"
+         id="text3697"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">JavaScanner</text>
+      <text
+         x="750"
+         y="5775"
+         id="text3699"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">CScanner</text>
+      <text
+         x="825"
+         y="3675"
+         id="text3701"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:Times">Node</text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/python10/scons.mod b/doc/python10/scons.mod
deleted file mode 100644
index 58a6576..0000000
--- a/doc/python10/scons.mod
+++ /dev/null
@@ -1,428 +0,0 @@
-<!--
-
-  __COPYRIGHT__
-
-  An SCons-specific DTD module, for use with SCons DocBook
-  documentation, that contains names, phrases, acronyms, etc. used
-  throughout the SCons documentation.
-
--->
-
-
-
-<!--
-
-  Other applications that we reference.
-
--->
-
-<!ENTITY Aegis "<application>Aegis</application>">
-<!ENTITY Ant "<application>Ant</application>">
-<!ENTITY Autoconf "<application>Autoconf</application>">
-<!ENTITY Automake "<application>Automake</application>">
-<!ENTITY cc "<application>cc</application>">
-<!ENTITY Cons "<application>Cons</application>">
-<!ENTITY cp "<application>cp</application>">
-<!ENTITY csh "<application>csh</application>">
-<!ENTITY gcc "<application>gcc</application>">
-<!ENTITY Jam "<application>Jam</application>">
-<!ENTITY jar "<application>jar</application>">
-<!ENTITY javac "<application>javac</application>">
-<!ENTITY javah "<application>javah</application>">
-<!ENTITY Make "<application>Make</application>">
-<!ENTITY Makepp "<application>Make++</application>">
-<!ENTITY Python "<application>Python</application>">
-<!ENTITY ranlib "<application>ranlib</application>">
-<!ENTITY rmic "<application>rmic</application>">
-<!ENTITY SCons "<application>SCons</application>">
-<!ENTITY scons "<application>scons</application>">
-<!ENTITY ScCons "<application>ScCons</application>">
-<!ENTITY tar "<application>tar</application>">
-<!ENTITY touch "<application>touch</application>">
-<!ENTITY zip "<application>zip</application>">
-
-
-<!--
-
-  Classes.
-
--->
-
-<!ENTITY Action "<classname>Action</classname>">
-<!ENTITY ActionBase "<classname>ActionBase</classname>">
-<!ENTITY CommandAction "<classname>CommandAction</classname>">
-<!ENTITY FunctionAction "<classname>FunctionAction</classname>">
-<!ENTITY ListAction "<classname>ListAction</classname>">
-<!ENTITY Builder "<classname>Builder</classname>">
-<!ENTITY BuilderBase "<classname>BuilderBase</classname>">
-<!ENTITY CompositeBuilder "<classname>CompositeBuilder</classname>">
-<!ENTITY MultiStepBuilder "<classname>MultiStepBuilder</classname>">
-<!ENTITY Job "<classname>Job</classname>">
-<!ENTITY Jobs "<classname>Jobs</classname>">
-<!ENTITY Serial "<classname>Serial</classname>">
-<!ENTITY Parallel "<classname>Parallel</classname>">
-<!ENTITY Node "<classname>Node</classname>">
-<!ENTITY Node_FS "<classname>Node.FS</classname>">
-<!ENTITY Scanner "<classname>Scanner</classname>">
-<!ENTITY Sig "<classname>Sig</classname>">
-<!ENTITY Signature "<classname>Signature</classname>">
-<!ENTITY Taskmaster "<classname>Taskmaster</classname>">
-<!ENTITY TimeStamp "<classname>TimeStamp</classname>">
-<!ENTITY Walker "<classname>Walker</classname>">
-<!ENTITY Wrapper "<classname>Wrapper</classname>">
-
-
-
-<!--
-
-  Options, command-line.
-
--->
-
-<!ENTITY debug-explain "<literal>--debug=explain</literal>">
-<!ENTITY implicit-cache "<literal>--implicit-cache</literal>">
-<!ENTITY implicit-deps-changed "<literal>--implicit-deps-changed</literal>">
-<!ENTITY implicit-deps-unchanged "<literal>--implicit-deps-unchanged</literal>">
-<!ENTITY Q "<literal>-Q</literal>">
-
-<!--
-
-  Options, SConscript-settable.
-
--->
-
-<!ENTITY implicit_cache "<literal>implicit_cache</literal>">
-<!ENTITY implicit_deps_changed "<literal>implicit_deps_changed</literal>">
-<!ENTITY implicit_deps_unchanged "<literal>implicit_deps_unchanged</literal>">
-
-
-
-<!--
-
-  File and directory names.
-
--->
-
-<!ENTITY build "<filename>build</filename>">
-<!ENTITY Makefile "<filename>Makefile</filename>">
-<!ENTITY Makefiles "<filename>Makefiles</filename>">
-<!ENTITY SConscript "<filename>SConscript</filename>">
-<!ENTITY SConstruct "<filename>SConstruct</filename>">
-<!ENTITY Sconstruct "<filename>Sconstruct</filename>">
-<!ENTITY sconstruct "<filename>sconstruct</filename>">
-<!ENTITY sconsign "<filename>.sconsign</filename>">
-<!ENTITY src "<filename>src</filename>">
-
-
-
-<!--
-
-  Methods and functions.  This includes functions from both
-  the Build Engine and the Native Python Interface.
-
--->
-
-<!ENTITY Add "<function>Add</function>">
-<!ENTITY AddOptions "<function>AddOptions</function>">
-<!ENTITY Alias "<function>Alias</function>">
-<!ENTITY Aliases "<function>Aliases</function>">
-<!ENTITY Append "<function>Append</function>">
-<!ENTITY BoolOption "<function>BoolOption</function>">
-<!ENTITY Build "<function>Build</function>">
-<!ENTITY CacheDir "<function>CacheDir</function>">
-<!ENTITY Clean "<function>Clean</function>">
-<!ENTITY Clone "<function>Clone</function>">
-<!ENTITY Command "<function>Command</function>">
-<!ENTITY Configure "<function>Configure</function>">
-<!ENTITY Copy "<function>Copy</function>">
-<!ENTITY Default "<function>Default</function>">
-<!ENTITY DefaultRules "<function>DefaultRules</function>">
-<!ENTITY Depends "<function>Depends</function>">
-<!ENTITY Dir "<function>Dir</function>">
-<!ENTITY Entry "<function>Entry</function>">
-<!ENTITY EnumOption "<function>EnumOption</function>">
-<!ENTITY Environment "<function>Environment</function>">
-<!ENTITY Export "<function>Export</function>">
-<!ENTITY File "<function>File</function>">
-<!ENTITY Finish "<function>Finish</function>">
-<!ENTITY GenerateHelpText "<function>GenerateHelpText</function>">
-<!ENTITY Help "<function>Help</function>">
-<!ENTITY Ignore "<function>Ignore</function>">
-<!ENTITY Import "<function>Import</function>">
-<!ENTITY Install "<function>Install</function>">
-<!ENTITY InstallAs "<function>InstallAs</function>">
-<!ENTITY Link "<function>Link</function>">
-<!ENTITY ListOption "<function>ListOption</function>">
-<!ENTITY Local "<function>Local</function>">
-<!ENTITY Module "<function>Module</function>">
-<!ENTITY Objects "<function>Objects</function>">
-<!ENTITY Options "<function>Options</function>">
-<!ENTITY PackageOption "<function>PackageOption</function>">
-<!ENTITY PathOption "<function>PathOption</function>">
-<!ENTITY Precious "<function>Precious</function>">
-<!ENTITY Prepend "<function>Prepend</function>">
-<!ENTITY Replace "<function>Replace</function>">
-<!ENTITY Repository "<function>Repository</function>">
-<!ENTITY Return "<function>Return</function>">
-<!ENTITY RuleSet "<function>RuleSet</function>">
-<!ENTITY Salt "<function>Salt</function>">
-<!ENTITY SetBuildSignatureType "<function>SetBuildSignatureType</function>">
-<!ENTITY SetContentSignatureType "<function>SetContentSignatureType</function>">
-<!ENTITY SourceSignature "<function>SourceSignature</function>">
-<!ENTITY SourceSignatures "<function>SourceSignatures</function>">
-<!ENTITY Split "<function>Split</function>">
-<!ENTITY TargetSignatures "<function>TargetSignatures</function>">
-<!ENTITY Task "<function>Task</function>">
-
-<!-- Environment methods -->
-<!ENTITY subst "<function>subst</function>">
-
-<!-- Configure context functions -->
-<!ENTITY Message "<function>Message</function>">
-<!ENTITY Result "<function>Result</function>">
-<!ENTITY CheckCHeader "<function>CheckCHeader</function>">
-<!ENTITY CheckCXXHeader "<function>CheckCXXHeader</function>">
-<!ENTITY CheckFunc "<function>CheckFunc</function>">
-<!ENTITY CheckHeader "<function>CheckHeader</function>">
-<!ENTITY CheckLib "<function>CheckLib</function>">
-<!ENTITY CheckLibWithHeader "<function>CheckLibWithHeader</function>">
-<!ENTITY CheckType "<function>CheckType</function>">
-<!ENTITY TryAction "<function>TryAction</function>">
-<!ENTITY TryBuild "<function>TryBuild</function>">
-<!ENTITY TryCompile "<function>TryCompile</function>">
-<!ENTITY TryLink "<function>TryLink</function>">
-<!ENTITY TryRun "<function>TryRun</function>">
-
-<!-- Python functions -->
-<!ENTITY str "<function>str</function>">
-<!ENTITY zipfile "<function>zipfile</function>">
-
-<!-- Obsolete, but referenced in old documents.  -->
-<!ENTITY Cache "<function>Cache</function>">
-
-
-
-<!--
-
-  Global variables.
-
--->
-
-<!ENTITY ARGUMENTS "<varname>ARGUMENTS</varname>">
-<!ENTITY BUILD_TARGETS "<varname>BUILD_TARGETS</varname>">
-<!ENTITY COMMAND_LINE_TARGETS "<varname>COMMAND_LINE_TARGETS</varname>">
-<!ENTITY DEFAULT_TARGETS "<varname>DEFAULT_TARGETS</varname>">
-
-
-
-<!--
-
-  Construction variables.
-
--->
-
-<!ENTITY BUILDERMAP "<varname>BUILDERMAP</varname>">
-<!ENTITY BUILDERS "<varname>BUILDERS</varname>">
-<!ENTITY CC "<varname>CC</varname>">
-<!ENTITY CCFLAGS "<varname>CCFLAGS</varname>">
-<!ENTITY CCCOM "<varname>CCCOM</varname>">
-<!ENTITY COLOR "<varname>COLOR</varname>">
-<!ENTITY COLORS "<varname>COLORS</varname>">
-<!ENTITY CONFIG "<varname>CONFIG</varname>">
-<!ENTITY CPPDEFINES "<varname>CPPDEFINES</varname>">
-<!ENTITY ENV "<varname>ENV</varname>">
-<!ENTITY JAVACLASSDIR "<varname>JAVACLASSDIR</varname>">
-<!ENTITY LIBDIRPREFIX "<varname>LIBDIRPREFIX</varname>">
-<!ENTITY LIBDIRSUFFIX "<varname>LIBDIRSUFFIX</varname>">
-<!ENTITY LIBLINKPREFIX "<varname>LIBLINKPREFIX</varname>">
-<!ENTITY LIBLINKSUFFIX "<varname>LIBLINKSUFFIX</varname>">
-<!ENTITY LIBPATH "<varname>LIBPATH</varname>">
-<!ENTITY LIBS "<varname>LIBS</varname>">
-<!ENTITY LINK "<varname>LINK</varname>">
-<!ENTITY LINKCOM "<varname>LINKCOM</varname>">
-<!ENTITY LINKFLAGS "<varname>LINKFLAGS</varname>">
-<!ENTITY RELEASE "<varname>RELEASE</varname>">
-<!ENTITY RELEASE_BUILD "<varname>RELEASE_BUILD</varname>">
-<!ENTITY SCANNERMAP "<varname>SCANNERMAP</varname>">
-<!ENTITY SCANNERS "<varname>SCANNERS</varname>">
-<!ENTITY TARFLAGS "<varname>TARFLAGS</varname>">
-<!ENTITY TARSUFFIX "<varname>TARSUFFIX</varname>">
-
-
-
-<!--
-
-  Environment variables.
-
--->
-
-<!ENTITY PATH "<varname>PATH</varname>">
-<!ENTITY PYTHONPATH "<varname>PYTHONPATH</varname>">
-<!ENTITY SCONSFLAGS "<varname>SCONSFLAGS</varname>">
-
-
-
-<!--
-
-  Function and method arguments.
-
--->
-
-<!ENTITY allowed_values "<varname>allowed_values</varname>">
-<!ENTITY build_dir "<varname>build_dir</varname>">
-<!ENTITY map "<varname>map</varname>">
-<!ENTITY ignorecase "<varname>ignorecase</varname>">
-<!ENTITY options "<varname>options</varname>">
-<!ENTITY exports "<varname>exports</varname>">
-<!ENTITY source "<varname>source</varname>">
-<!ENTITY target "<varname>target</varname>">
-
-
-
-<!--
-
-  Values of function and method arguments.
-
--->
-
-<!ENTITY all "<literal>all</literal>">
-<!ENTITY none "<literal>none</literal>">
-
-
-
-<!--
-
-  Builder and Scanner objects.
-
--->
-
-<!ENTITY BuildDir "<function>BuildDir</function>">
-<!ENTITY CFile "<function>CFile</function>">
-<!ENTITY CXXFile "<function>CXXFile</function>">
-<!ENTITY DVI "<function>DVI</function>">
-<!ENTITY Jar "<function>Jar</function>">
-<!ENTITY Java "<function>Java</function>">
-<!ENTITY JavaH "<function>JavaH</function>">
-<!ENTITY Library "<function>Library</function>">
-<!ENTITY Object "<function>Object</function>">
-<!ENTITY PCH "<function>PCH</function>">
-<!ENTITY PDF "<function>PDF</function>">
-<!ENTITY PostScript "<function>PostScript</function>">
-<!ENTITY Program "<function>Program</function>">
-<!ENTITY RES "<function>RES</function>">
-<!ENTITY RMIC "<function>RMIC</function>">
-<!ENTITY SharedLibrary "<function>SharedLibrary</function>">
-<!ENTITY SharedObject "<function>SharedObject</function>">
-<!ENTITY StaticLibrary "<function>StaticLibrary</function>">
-<!ENTITY StaticObject "<function>StaticObject</function>">
-<!ENTITY Tar "<function>Tar</function>">
-<!ENTITY Zip "<function>Zip</function>">
-
-<!-- Obsolete, but referenced in old documents.  -->
-<!ENTITY MakeBuilder "<function>Make</function>">
-
-
-
-<!--
-
-  Terms.  Define both singular and plural forms in various
-  case-sensitive combinations for use in titles, in-line, etc.
-
--->
-
-<!ENTITY buildfunc "<literal>builder function</literal>">
-<!ENTITY builder_method "<literal>builder method</literal>">
-
-<!ENTITY Configure_Contexts "<literal>Configure Contexts</literal>">
-<!ENTITY configure_context "<literal>configure context</literal>">
-
-<!ENTITY ConsEnv "<literal>Construction Environment</literal>">
-<!ENTITY ConsEnvs "<literal>Construction Environments</literal>">
-<!ENTITY Consenv "<literal>Construction environment</literal>">
-<!ENTITY Consenvs "<literal>Construction environments</literal>">
-<!ENTITY consenv "<literal>construction environment</literal>">
-<!ENTITY consenvs "<literal>construction environments</literal>">
-
-<!ENTITY ConsVar "<literal>Construction Variable</literal>">
-<!ENTITY ConsVars "<literal>Construction Variables</literal>">
-<!ENTITY Consvar "<literal>Construction variable</literal>">
-<!ENTITY Consvars "<literal>Construction variables</literal>">
-<!ENTITY consvar "<literal>construction variable</literal>">
-<!ENTITY consvars "<literal>construction variables</literal>">
-
-<!ENTITY CPPPATH "<literal>CPPPATH</literal>">
-
-<!ENTITY Dictionary "<literal>Dictionary</literal>">
-
-<!ENTITY Emitter "<literal>Emitter</literal>">
-<!ENTITY emitter "<literal>emitter</literal>">
-<!ENTITY Generator "<literal>Generator</literal>">
-<!ENTITY generator "<literal>generator</literal>">
-
-<!ENTITY Nodes "<literal>Nodes</literal>">
-
-<!ENTITY signature "<literal>signature</literal>">
-<!ENTITY buildsignature "<literal>build signature</literal>">
-
-<!ENTITY true "<literal>true</literal>">
-<!ENTITY false "<literal>false</literal>">
-
-<!ENTITY typedef "<literal>typedef</literal>">
-
-<!--
-
-  File and program names used in examples.
-
--->
-
-<!ENTITY bar "<application>bar</application>">
-<!ENTITY common1_c "<filename>common1.c</filename>">
-<!ENTITY common2_c "<filename>common2.c</filename>">
-<!ENTITY custom_py "<filename>custom.py</filename>">
-<!ENTITY goodbye "<application>goodbye</application>">
-<!ENTITY goodbye_o "<filename>goodbye.o</filename>">
-<!ENTITY goodbye_obj "<filename>goodbye.obj</filename>">
-<!ENTITY file_dll "<filename>file.dll</filename>">
-<!ENTITY file_in "<filename>file.in</filename>">
-<!ENTITY file_lib "<filename>file.lib</filename>">
-<!ENTITY file_o "<filename>file.o</filename>">
-<!ENTITY file_obj "<filename>file.obj</filename>">
-<!ENTITY file_out "<filename>file.out</filename>">
-<!ENTITY foo "<application>foo</application>">
-<!ENTITY foo_o "<filename>foo.o</filename>">
-<!ENTITY foo_obj "<filename>foo.obj</filename>">
-<!ENTITY hello "<application>hello</application>">
-<!ENTITY hello_c "<filename>hello.c</filename>">
-<!ENTITY hello_exe "<filename>hello.exe</filename>">
-<!ENTITY hello_h "<filename>hello.h</filename>">
-<!ENTITY hello_o "<filename>hello.o</filename>">
-<!ENTITY hello_obj "<filename>hello.obj</filename>">
-<!ENTITY libfile_a "<filename>libfile_a</filename>">
-<!ENTITY libfile_so "<filename>libfile_so</filename>">
-<!ENTITY new_hello "<application>new_hello</application>">
-<!ENTITY new_hello_exe "<application>new_hello.exe</application>">
-<!ENTITY prog "<filename>prog</filename>">
-<!ENTITY prog1 "<filename>prog1</filename>">
-<!ENTITY prog2 "<filename>prog2</filename>">
-<!ENTITY prog_c "<filename>prog.c</filename>">
-<!ENTITY prog_exe "<filename>prog.exe</filename>">
-<!ENTITY stdio_h "<filename>stdio.h</filename>">
-
-<!--
-
-  Punctuation.
-
--->
-
-<!ENTITY plus "<literal>+</literal>">
-<!ENTITY hash "<literal>#</literal>">
-
-<!--
-
-  Mailing lists
-
--->
-
-<!ENTITY scons-announce "<literal>announce@scons.tigris.org</literal>">
-<!ENTITY scons-devel "<literal>dev@scons.tigris.org</literal>">
-<!ENTITY scons-users "<literal>users@scons.tigris.org</literal>">
diff --git a/doc/python10/sig.eps b/doc/python10/sig.eps
deleted file mode 100644
index 26aabaa..0000000
--- a/doc/python10/sig.eps
+++ /dev/null
@@ -1,147 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: build/doc/python10/sig.fig
-%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d
-%%CreationDate: Sun Jan  2 01:21:05 2005
-%%For: knight@casablanca.home.baldmt.com (Steven Knight)
-%%BoundingBox: 0 0 308 128
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 128 moveto 0 0 lineto 308 0 lineto 308 128 lineto closepath clip newpath
--71.3 288.7 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-%
-% Fig objects follow
-%
-% Polyline
-7.500 slw
-n 1200 3000 m 2700 3000 l 2700 3600 l 1200 3600 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-1950 3375 m
-gs 1 -1 sc (Taskmaster) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 3300 4200 m 4500 4200 l 4500 4800 l 3300 4800 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-3900 4575 m
-gs 1 -1 sc (MD5) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 5100 4200 m 6300 4200 l 6300 4800 l 5100 4800 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-5700 4575 m
-gs 1 -1 sc (TStamp) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 4200 3000 m 5400 3000 l 5400 3600 l 4200 3600 l
- cp gs col0 s gr 
-/Times-Roman ff 240.00 scf sf
-4800 3375 m
-gs 1 -1 sc (Sig) dup sw pop 2 div neg 0 rm  col0 sh gr
-% Polyline
-n 2700 3300 m 2775 3340 l 2850 3300 l 2775 3260 l
- cp gs col0 s gr 
-% Polyline
-n 4800 3600 m 4725 3750 l 4875 3750 l
- cp gs col0 s gr 
-% Polyline
-n 3900 4200 m 3900 3900 l 5700 3900 l
- 5700 4200 l gs col0 s gr 
-% Polyline
-n 4800 3750 m
- 4800 3900 l gs col0 s gr 
-% Polyline
-gs  clippath
-4215 3330 m 4215 3270 l 4064 3270 l 4184 3300 l 4064 3330 l cp
-eoclip
-n 2850 3300 m
- 4200 3300 l gs col0 s gr gr
-
-% arrowhead
-n 4064 3330 m 4184 3300 l 4064 3270 l 4064 3330 l  cp gs 0.00 setgray ef gr  col0 s
-% Polyline
- [60] 0 sd
-n 1950 3000 m
- 1950 2700 l gs col0 s gr  [] 0 sd
-% Polyline
- [60] 0 sd
-n 4800 3000 m
- 4800 2700 l gs col0 s gr  [] 0 sd
-$F2psEnd
-rs
diff --git a/doc/python10/sig.svg b/doc/python10/sig.svg
new file mode 100644
index 0000000..09e2719
--- /dev/null
+++ b/doc/python10/sig.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.07552694,0,0,0.07552694,91.773975,249.13616)"
+       id="g3772"
+       style="fill:none;stroke-width:0.025in">
+      <rect
+         width="1500"
+         height="600"
+         rx="0"
+         x="1200"
+         y="3000"
+         id="rect3774"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="3300"
+         y="4200"
+         id="rect3776"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="5100"
+         y="4200"
+         id="rect3778"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <rect
+         width="1200"
+         height="600"
+         rx="0"
+         x="4200"
+         y="3000"
+         id="rect3780"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="2775,3260 2700,3300 2700,3300 2775,3340 2850,3300 "
+         id="polygon3782"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polygon
+         points="4800,3600 4800,3600 4725,3750 4875,3750 "
+         id="polygon3784"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter" />
+      <polyline
+         id="polyline3786"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="3900,4200 3900,3900 5700,3900 5700,4200 " />
+      <polyline
+         id="polyline3788"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="4800,3750 4800,3900 " />
+      <polyline
+         id="polyline3790"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter"
+         points="2850,3300 4080,3300 " />
+      <polygon
+         points="4079,3330 4079,3330 4199,3300 4079,3270 "
+         id="polygon3792"
+         style="fill:#000000;stroke:#000000;stroke-width:7;stroke-miterlimit:8" />
+      <polyline
+         id="polyline3794"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="1950,3000 1950,2700 " />
+      <polyline
+         id="polyline3796"
+         style="stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:40, 40"
+         points="4800,3000 4800,2700 " />
+      <text
+         x="1950"
+         y="3375"
+         id="text3798"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Taskmaster</text>
+      <text
+         x="3900"
+         y="4575"
+         id="text3800"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">MD5</text>
+      <text
+         x="5700"
+         y="4575"
+         id="text3802"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">TStamp</text>
+      <text
+         x="4800"
+         y="3375"
+         id="text3804"
+         xml:space="preserve"
+         style="font-size:192px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:Times">Sig</text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/python10/summary.xml b/doc/python10/summary.xml
new file mode 100644
index 0000000..80c3ef4
--- /dev/null
+++ b/doc/python10/summary.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-summary"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Summary</title>
+
+<!--
+
+  __COPYRIGHT__
+
+  Permission is hereby granted, free of charge, to any person obtaining
+  a copy of this software and associated documentation files (the
+  "Software"), to deal in the Software without restriction, including
+  without limitation the rights to use, copy, modify, merge, publish,
+  distribute, sublicense, and/or sell copies of the Software, and to
+  permit persons to whom the Software is furnished to do so, subject to
+  the following conditions:
+
+  The above copyright notice and this permission notice shall be included
+  in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+  KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+  WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
+  <para>
+
+    This paper has introduced &SCons;, a next-generation build tool
+    with a modular, embeddable architecture and a direct Python
+    interface. &SCons; has a global view of the dependencies in a source
+    tree, uses MD5 signatures to decide if derived files are out of date,
+    and automatically scans files for dependencies, all of which make &SCons;
+    builds exceptionally reliable. The &SCons; development methodology has
+    been described, notable for its emphasis on automated regression
+    testing to ensure a robust and reliable tool from day one. Several
+    future directions for &SCons; have also been discussed.
+
+  </para>
+
+</section>
diff --git a/doc/reference/Alias.xml b/doc/reference/Alias.xml
index b87967d..3f80385 100644
--- a/doc/reference/Alias.xml
+++ b/doc/reference/Alias.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-Alias"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The Alias Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/CFile.xml b/doc/reference/CFile.xml
index f76c390..f7d0d71 100644
--- a/doc/reference/CFile.xml
+++ b/doc/reference/CFile.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-CFile"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The CFile Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/CXXFile.xml b/doc/reference/CXXFile.xml
index c1c038e..7785300 100644
--- a/doc/reference/CXXFile.xml
+++ b/doc/reference/CXXFile.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-CXXFile"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The CXXFile Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/Command.xml b/doc/reference/Command.xml
index abb3a58..d75f999 100644
--- a/doc/reference/Command.xml
+++ b/doc/reference/Command.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-Command"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The Command Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -71,3 +83,5 @@ F<foo.h> and F<foo.c>.
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/Install.xml b/doc/reference/Install.xml
index 2d06e3b..d08ed99 100644
--- a/doc/reference/Install.xml
+++ b/doc/reference/Install.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-Install"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The Install Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/InstallAs.xml b/doc/reference/InstallAs.xml
index ed8cb78..7b92a3d 100644
--- a/doc/reference/InstallAs.xml
+++ b/doc/reference/InstallAs.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-InstallAs"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The InstallAs Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/Library.xml b/doc/reference/Library.xml
index 19a3e96..c46df03 100644
--- a/doc/reference/Library.xml
+++ b/doc/reference/Library.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-Library"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The Library Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -150,3 +162,5 @@ is linked, and, of course, C<gcc> will be used to compile both modules:
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/Object.xml b/doc/reference/Object.xml
index 9e887d8..022a38f 100644
--- a/doc/reference/Object.xml
+++ b/doc/reference/Object.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-Object"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The Object Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -69,3 +81,5 @@ returns the list of object filenames.
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/PCH.xml b/doc/reference/PCH.xml
index b2a4d75..308e328 100644
--- a/doc/reference/PCH.xml
+++ b/doc/reference/PCH.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-PCH"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The PCH Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/PDF.xml b/doc/reference/PDF.xml
index b3a25dc..d7f6f40 100644
--- a/doc/reference/PDF.xml
+++ b/doc/reference/PDF.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-PDF"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The PDF Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/PostScript.xml b/doc/reference/PostScript.xml
index f5a6579..4c8cda3 100644
--- a/doc/reference/PostScript.xml
+++ b/doc/reference/PostScript.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-PostScript"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The PDF Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/Program.xml b/doc/reference/Program.xml
index 30f90d2..b55f18f 100644
--- a/doc/reference/Program.xml
+++ b/doc/reference/Program.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-Program"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The Program Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -75,3 +87,5 @@ be built before the command is linked.
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/RES.xml b/doc/reference/RES.xml
index 15c0aea..bca1df1 100644
--- a/doc/reference/RES.xml
+++ b/doc/reference/RES.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-RES"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The RES Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/SharedLibrary.xml b/doc/reference/SharedLibrary.xml
index 603dab1..c9d854a 100644
--- a/doc/reference/SharedLibrary.xml
+++ b/doc/reference/SharedLibrary.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-SharedLibrary"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The SharedLibrary Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/SharedObject.xml b/doc/reference/SharedObject.xml
index 0860769..641b202 100644
--- a/doc/reference/SharedObject.xml
+++ b/doc/reference/SharedObject.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-SharedObject"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The SharedObject Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/StaticLibrary.xml b/doc/reference/StaticLibrary.xml
index ea7ae5b..8c00562 100644
--- a/doc/reference/StaticLibrary.xml
+++ b/doc/reference/StaticLibrary.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-StaticLibrary"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The StaticLibrary Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/StaticObject.xml b/doc/reference/StaticObject.xml
index ff8dae8..e59d221 100644
--- a/doc/reference/StaticObject.xml
+++ b/doc/reference/StaticObject.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<section id="sect-StaticObject"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>The StaticObject Builder</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</section>
diff --git a/doc/reference/copyright.xml b/doc/reference/copyright.xml
index 7f6059c..aa56fa5 100644
--- a/doc/reference/copyright.xml
+++ b/doc/reference/copyright.xml
@@ -1,6 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -30,3 +40,5 @@
 
  </para>
 </blockquote>
+
+</legalnotice>
diff --git a/doc/reference/errors.xml b/doc/reference/errors.xml
index 448777f..b0f9065 100644
--- a/doc/reference/errors.xml
+++ b/doc/reference/errors.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-errors"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Errors Generated by &SCons;</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -39,3 +51,5 @@
    </para>
 
  </section>
+
+</chapter>
diff --git a/doc/reference/main.xml b/doc/reference/main.xml
index ed122f6..f3d706e 100644
--- a/doc/reference/main.xml
+++ b/doc/reference/main.xml
@@ -1,8 +1,22 @@
 <?xml version="1.0"?>
 
+<!DOCTYPE sconsdoc [
+
+    <!ENTITY % version SYSTEM "../version.xml">
+    %version;
+
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+
+]>
+
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+      
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -24,45 +38,7 @@
   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 -->
-
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
-
-    <!ENTITY % version SYSTEM "../version.xml">
-    %version;
-
-    <!ENTITY % scons SYSTEM "../scons.mod">
-    %scons;
-
-    <!-- Builders -->
-    <!ENTITY Alias_file SYSTEM "Alias.xml">
-    <!ENTITY CFile_file SYSTEM "CFile.xml">
-    <!ENTITY CXXFile_file SYSTEM "CXXFile.xml">
-    <!ENTITY Command_file SYSTEM "Command.xml">
-    <!ENTITY Install_file SYSTEM "Install.xml">
-    <!ENTITY InstallAs_file SYSTEM "InstallAs.xml">
-    <!ENTITY Library_file SYSTEM "Library.xml">
-    <!ENTITY Object_file SYSTEM "Object.xml">
-    <!ENTITY PCH_file SYSTEM "PCH.xml">
-    <!ENTITY PDF_file SYSTEM "PDF.xml">
-    <!ENTITY PostScript_file SYSTEM "PostScript.xml">
-    <!ENTITY Program_file SYSTEM "Program.xml">
-    <!ENTITY RES_file SYSTEM "RES.xml">
-    <!ENTITY SharedLibrary_file SYSTEM "SharedLibrary.xml">
-    <!ENTITY SharedObject_file SYSTEM "SharedObject.xml">
-    <!ENTITY StaticLibrary_file SYSTEM "StaticLibrary.xml">
-    <!ENTITY StaticObject_file SYSTEM "StaticObject.xml">
-
-    <!-- Construction Variables -->
-
-    <!ENTITY copyright SYSTEM "copyright.xml">
-    <!ENTITY errors SYSTEM "errors.xml">
-    <!ENTITY preface SYSTEM "preface.xml">
-
-]>
-
-<book>
+      
   <bookinfo>
     <title>SCons Reference Manual &buildversion;</title>
 
@@ -80,128 +56,53 @@
       <holder>Steven Knight</holder>
     </copyright>
 
-    <legalnotice>
-      &copyright;
-    </legalnotice>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
 
     <releaseinfo>version &buildversion;</releaseinfo>
 
   </bookinfo>
 
-  <chapter id="chap-preface">
-    <title>Preface</title>
-    &preface;
-  </chapter>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="preface.xml"/>
 
   <chapter id="chap-builders">
     <title>Builder Reference</title>
 
-    <section id="sect-Alias">
-      <title>The Alias Builder</title>
-      &Alias_file;
-    </section>
-
-    <section id="sect-CFile">
-      <title>The CFile Builder</title>
-      &CFile_file;
-    </section>
-
-    <section id="sect-Command">
-      <title>The Command Builder</title>
-      &Command_file;
-    </section>
-
-    <section id="sect-CXXFile">
-      <title>The CXXFile Builder</title>
-      &CXXFile_file;
-    </section>
-
-    <section id="sect-Install">
-      <title>The Install Builder</title>
-      &Install_file;
-    </section>
-
-    <section id="sect-InstallAs">
-      <title>The InstallAs Builder</title>
-      &InstallAs_file;
-    </section>
-
-    <section id="sect-Library">
-      <title>The Library Builder</title>
-      &Library_file;
-    </section>
-
-    <section id="sect-Object">
-      <title>The Object Builder</title>
-      &Object_file;
-    </section>
-
-    <section id="sect-PCH">
-      <title>The PCH Builder</title>
-      &PCH_file;
-    </section>
-
-    <section id="sect-PDF">
-      <title>The PDF Builder</title>
-      &PDF_file;
-    </section>
-
-    <section id="sect-PostScript">
-      <title>The PDF Builder</title>
-      &PostScript_file;
-    </section>
-
-    <section id="sect-Program">
-      <title>The Program Builder</title>
-      &Program_file;
-    </section>
-
-    <section id="sect-RES">
-      <title>The RES Builder</title>
-      &RES_file;
-    </section>
-
-    <section id="sect-SharedLibrary">
-      <title>The SharedLibrary Builder</title>
-      &SharedLibrary_file;
-    </section>
-
-    <section id="sect-SharedObject">
-      <title>The SharedObject Builder</title>
-      &SharedObject_file;
-    </section>
-
-    <section id="sect-StaticLibrary">
-      <title>The StaticLibrary Builder</title>
-      &StaticLibrary_file;
-    </section>
-
-    <section id="sect-StaticObject">
-      <title>The StaticObject Builder</title>
-      &StaticObject_file;
-    </section>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Alias.xml"/>
 
-  </chapter>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="CFile.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Command.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="CXXFile.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Install.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="InstallAs.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Library.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Object.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="PCH.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="PDF.xml"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="PostScript.xml"/>
 
-  <chapter id="chap-variables">
-    <title>&ConsVar; Reference</title>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Program.xml"/>
 
-    <section id="sect-AR">
-      <title>AR</title>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="RES.xml"/>
 
-      <para>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SharedLibrary.xml"/>
 
-      X
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SharedObject.xml"/>
 
-      </para>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="StaticLibrary.xml"/>
 
-    </section>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="StaticObject.xml"/>
 
   </chapter>
 
-  <appendix id="chap-errors">
-    <title>Errors Generated by &SCons;</title>
-    &errors;
-  </appendix>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="errors.xml"/>
 
 </book>
diff --git a/doc/reference/preface.xml b/doc/reference/preface.xml
index 82ea44a..39994a4 100644
--- a/doc/reference/preface.xml
+++ b/doc/reference/preface.xml
@@ -1,6 +1,18 @@
+<?xml version='1.0'?>
+<!DOCTYPE sconsdoc [
+    <!ENTITY % scons SYSTEM "../scons.mod">
+    %scons;
+]>
+
+<chapter id="chap-preface"
+         xmlns="http://www.scons.org/dbxsd/v1.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 scons.xsd">
+<title>Preface</title>
+
 <!--
 
-  Copyright (c) 2001, 2002, 2003 Steven Knight
+  __COPYRIGHT__
 
   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
@@ -83,3 +95,5 @@
    </para>
 
  </section>
+
+</chapter>
diff --git a/doc/scons.mod b/doc/scons.mod
index 4066ef3..01e9a6d 100644
--- a/doc/scons.mod
+++ b/doc/scons.mod
@@ -535,3 +535,4 @@
 -->
 
 <!ENTITY lambda "&#923;">
+<!ENTITY mdash "&#8212;">
diff --git a/doc/user/builders-built-in.xml b/doc/user/builders-built-in.xml
index 1cc5b65..ec4012d 100644
--- a/doc/user/builders-built-in.xml
+++ b/doc/user/builders-built-in.xml
@@ -211,7 +211,7 @@
     Other relevant construction variables
     include those used by the &b-link-Object;
     builders to affect how the
-    source files specified as input to the &t-Program;
+    source files specified as input to the <literal>Program</literal>
     builders are turned into object files;
     see the next section.
 
-- 
cgit v0.12