diff --git a/refpolicy/doc/doctools/footer.html b/refpolicy/doc/doctools/footer.html
deleted file mode 100644
index 308b1d0..0000000
--- a/refpolicy/doc/doctools/footer.html
+++ /dev/null
@@ -1,2 +0,0 @@
-</body>
-</html>
diff --git a/refpolicy/doc/doctools/header.html b/refpolicy/doc/doctools/header.html
deleted file mode 100644
index daf0904..0000000
--- a/refpolicy/doc/doctools/header.html
+++ /dev/null
@@ -1,8 +0,0 @@
- 
-<html>
-<head>
-<title>Security Enhanced Linux Reference Policy</title>
-<style type="text/css" media="all">@import "style.css";</style>
-</head>
-<body>
-<div id="Header">Security Enhanced Linux Reference Policy</div>
diff --git a/refpolicy/doc/doctools/policy.dtd b/refpolicy/doc/doctools/policy.dtd
deleted file mode 100644
index 6d21a1b..0000000
--- a/refpolicy/doc/doctools/policy.dtd
+++ /dev/null
@@ -1,17 +0,0 @@
-<!ELEMENT policy (module+)>
-<!ELEMENT module (summary,interface+)>
-<!ATTLIST module 
-      name CDATA #REQUIRED
-      layer CDATA #REQUIRED>
-<!ELEMENT summary (#PCDATA)>
-<!ELEMENT interface (description,parameter+,infoflow)>
-<!ATTLIST interface name CDATA #REQUIRED>
-<!ELEMENT description (#PCDATA)>
-<!ELEMENT parameter (#PCDATA)>
-<!ATTLIST parameter 
-      name CDATA #REQUIRED
-      optional (true|false) "false">
-<!ELEMENT infoflow EMPTY>
-<!ATTLIST infoflow 
-      type CDATA #REQUIRED
-      weight CDATA #IMPLIED>
diff --git a/refpolicy/doc/doctools/src/Converter.java b/refpolicy/doc/doctools/src/Converter.java
deleted file mode 100644
index 91378fd..0000000
--- a/refpolicy/doc/doctools/src/Converter.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Converter.java: The reference policy documentation converter		
- * Version: @version@ 
- */
-import policy.*;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-import java.util.Map;
-
-/**
- * The reference policy documentation generator and xml analyzer class.
- * It pulls in XML describing reference policy, transmogrifies it,
- * and spits it back out in some other arbitrary format.
- */
-public class Converter{
-	private Policy policy;
-	private static final String HTMLEXT = ".html";
-	private static final String indexContent = 
-		"<div id=\"Content\"><h2>Welcome to the reference policy API!</h2><p/>" +
-		"Please choose from the navigation options to the left.</div>";
-
-	private StringBuffer headerOutput = new StringBuffer();
-	private StringBuffer footerOutput = new StringBuffer();
-	private File outDir;
-	
-	public Converter(Policy pol, File headerFile, File footerFile) throws IOException{
-		policy = pol;
-
-		/*
-		 * Setup header and footer. 
-		 */
-		FileReader headIn = new FileReader(headerFile);
-
-		BufferedReader br = new BufferedReader(headIn);
-	    String line = null; //not declared within while loop
-	    while (( line = br.readLine()) != null){
-	        headerOutput.append(line);
-	        headerOutput.append(System.getProperty("line.separator"));
-	    }
-		
-		FileReader footerIn = new FileReader(footerFile);
-				
-		br = new BufferedReader(footerIn);
-	    line = null; //not declared within while loop
-	    while (( line = br.readLine()) != null){
-	        footerOutput.append(line);
-	        footerOutput.append(System.getProperty("line.separator"));
-	    }
-	}
-	
-	public void Convert(File _outDir) throws IOException{
-		outDir = _outDir;
-
-		// write the index document
-		FileWrite("index" + HTMLEXT, headerOutput.toString() 
-				+ Menu().toString() + indexContent + footerOutput.toString());
-		
-		// walk the policy and write pages for each module
-		for(Map.Entry<String,Layer> lay:policy.Children.entrySet()){
-			Layer layer = lay.getValue();
-			// the base output contains the menu and layer content header
-			StringBuffer baseOutput = new StringBuffer();
-			// the layer output will be filled with modules and summarys for content
-			StringBuffer layerOutput = new StringBuffer();
-			
-			// create the navigation menu
-			baseOutput.append(Menu(layer.Name));
-
-			baseOutput.append("<div id=\"Content\">\n");
-			baseOutput.append("\t<h1>Layer: " + layer.Name + "</h1><p/>\n");
-		
-			layerOutput.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\" width=\"75%\">\n");
-			layerOutput.append("<tr><th class=\"title\">Module&nbsp;Name</th>" + 
-					"<th class=\"title\">Summary</th></tr>");
-			
-			for(Map.Entry<String,Module> mod:layer.Children.entrySet()){
-				// module output will be filled with in-depth module info.
-				StringBuffer moduleOutput = new StringBuffer();
-				Module module = mod.getValue();
-				
-				// get the content for the module's document
-				moduleOutput.append(moduleContent(mod.getValue()).toString() + "</div>");
-				
-				// get the summary and name for the layer's document
-
-				layerOutput.append("<tr><td><a href=\"" + layer.Name + "_" + module.Name + HTMLEXT 
-						+ "\">" + module.Name + "</a></td>" +
-						"\n<td>" + module.PCDATA + "</td></tr>\n");
-				
-				// write module document
-				FileWrite(layer.Name + "_" + module.Name + HTMLEXT, 
-					headerOutput.toString() + "\n" + baseOutput.toString() + moduleOutput.toString() + footerOutput.toString());
-			}
-			// write layer document
-			FileWrite(layer.Name + HTMLEXT, 
-				headerOutput.toString() + "\n" + baseOutput.toString() 
-				+ layerOutput.toString() + "</div>" + footerOutput.toString());
-
-		}
-	}
-	
-	private StringBuffer Menu(String key){
-		StringBuffer out = new StringBuffer();
-		out.append("<div id=\"Menu\">\n");
-		for(Map.Entry<String,Layer> layer:policy.Children.entrySet()){
-			String layerName = layer.getKey();
-			
-			
-			// show the modules for the current key
-			if (layerName.equals(key)){
-				out.append("\t<a href=\"" + layerName 
-						+ HTMLEXT + "\">" + layerName + "</a><br />\n");
-				out.append("\t<div id=\"subitem\">\n");
-				for(Map.Entry<String,Module> module:layer.getValue().Children.entrySet()){
-					String moduleName = module.getKey();
-					out.append("\t\t-&nbsp;<a href=\"" + layerName + "_" + moduleName + HTMLEXT 
-							+ "\">" + moduleName + "</a><br />\n");
-				}
-				out.append("\t</div>\n");
-			} else {
-				out.append("\t<a href=\"" + layerName +
-						HTMLEXT + "\">+&nbsp;" + layerName + "</a><br />\n");
-			}
-		}
-		out.append("</div>");
-		return out;
-	}
-
-	private StringBuffer Menu(){
-		StringBuffer out = new StringBuffer();
-		out.append("<div id=\"Menu\">\n");
-		for(Map.Entry<String,Layer> layer:policy.Children.entrySet()){
-			String layerName = layer.getKey();
-			
-			
-			out.append("\t<a href=\"" + layerName + HTMLEXT + "\">" + layerName + "</a><br />\n");
-			out.append("\t<div id=\"subitem\">\n");
-			for(Map.Entry<String,Module> module:layer.getValue().Children.entrySet()){
-				String moduleName = module.getKey();
-				out.append("\t\t-&nbsp;<a href=\"" + layerName + "_" + moduleName + HTMLEXT 
-						+ "\">" + moduleName + "</a><br />\n");
-			}
-			out.append("\t</div>\n");
-		}
-		out.append("</div>");
-		return out;
-	}
-
-	private StringBuffer moduleContent(Module module){
-		StringBuffer out = new StringBuffer();
-
-		out.append("\t<h2>Module:&nbsp;"+ module.Name + "<br />\n");
-		out.append("\tSummary:&nbsp;" + module.PCDATA + "</h2>\n");
-		for (Map.Entry<String,Interface> inter:module.Children.entrySet()){
-			Interface iface = inter.getValue();
-			// main table header
-			out.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\" width=\"75%\">\n");
-			out.append("<tr><th class=\"title\" colspan=\"3\">Interface</th></tr>\n");
-			
-			// only show weight when type isnt none
-			if (iface.Type != InterfaceType.None){
-				out.append("<tr><td>Name</td><td colspan=\"2\">" + iface.Name + "</td></tr>\n" +
-						"<tr><td>Flow&nbsp;Type</td><td colspan=\"2\">" + iface.Type.toString() + "</td></tr>\n");
-				out.append("\t<td>Flow&nbsp;Weight</td><td colspan=\"2\">" + iface.Weight + "</td></tr>\n");
-			} else {
-				out.append("<tr><td>Name</td><td colspan=\"2\">" + iface.Name + "</td></tr>\n");
-				out.append("<tr><td>Flow&nbsp;Type</td><td colspan=\"2\">" + iface.Type.toString() + "</td></tr>\n");
-				
-			}
-			out.append("<tr><td>Description</td><td colspan=\"2\">" + iface.PCDATA + "</td></tr>\n");
-			
-			out.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\" width=\"75%\">\n" 
-					+ "<tr><th class=\"title\">Parameter</th><th class=\"title\">Description</th>" 
-					+ "<th class=\"title\">Optional</th></tr>");
-			for (Map.Entry<String,Parameter> param:iface.Children.entrySet()){
-				Parameter parameter = param.getValue();
-				out.append("\t<tr><td> " + parameter.Name + "</td>\n");
-				out.append("\t<td>" + parameter.PCDATA + "</td>\n");
-				String opt = parameter.GetAttribute("optional");
-				if (opt != null && opt.equalsIgnoreCase("true")){
-					out.append("\t<td><center>Yes</center></td></tr>\n");
-				} else {
-					out.append("\t<td><center>No</center></td></tr>\n");
-				}
-			}
-			out.append("\n</table></table><br/><br/>\n");
-		}
-		return out;
-	}
-	
-	/**
-	 * Write to sub directory.
-	 * @param path
-	 * @param outFilename
-	 * @param content
-	 * @return
-	 */
-	private void FileWrite (String path, String outFilename, String content){
-		try {
-			// create parent if necessary
-			File outParent = new File(outDir, path );
-			File outFile = new File(outParent, outFilename );
-			if (outParent.exists() && !outParent.isDirectory()){
-				throw new IOException("Output directory not really a directory");
-			} else if (!outParent.exists()){
-				outParent.mkdirs();
-			} 
-			PrintStream stream = new PrintStream(new FileOutputStream(outFile));
-			stream.println(content);
-			stream.flush();
-			stream.close();
-		} catch (Exception e){
-			System.err.println (e.getMessage());
-			System.exit(1);
-		}
-	}
-	
-	/**
-	 * Write to output directory directly.
-	 * 
-	 * @param path
-	 * @param outFilename
-	 * @param content
-	 * @return
-	 */
-	private void FileWrite (String outFilename, String content){
-		try {
-			File out = new File(outDir, outFilename );
-			PrintStream stream = new PrintStream(new FileOutputStream(out));
-			stream.println(content);
-			stream.flush();
-			stream.close();
-		} catch (Exception e){
-			System.err.println (e.getMessage());
-			System.exit(1);
-		}
-	}
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/Docgen.java b/refpolicy/doc/doctools/src/Docgen.java
deleted file mode 100644
index 12e38bf..0000000
--- a/refpolicy/doc/doctools/src/Docgen.java
+++ /dev/null
@@ -1,565 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Docgen.java: The reference policy xml analyzer and documentation generator		
- */
-import policy.*;
-
-import java.io.*;
-import java.util.*;
-
-import javax.xml.parsers.DocumentBuilder; 
-import javax.xml.parsers.DocumentBuilderFactory;  
-import javax.xml.parsers.ParserConfigurationException;
-
-import javax.xml.validation.SchemaFactory;
-import javax.xml.validation.Schema;
-
-import javax.xml.XMLConstants;
-
-import org.xml.sax.*;
-import org.w3c.dom.*;
-
-/**
- * The reference policy documentation generator and xml analyzer class.
- * It pulls in XML describing reference policy, transmogrifies it,
- * and spits it back out in some other arbitrary format.
- */
-public class Docgen{
-	// store the PIs here
-	private static Vector procInstr = new Vector();
-	private static boolean verbose = false;
-	// the policy structure built after xml is parsed
-	private Policy policy = null;
-	// the xml document
-	private Document dom = null;
-	
-	// the files/directories passed in from the command line
-	private static File xmlFile;
-	private static File headerFile;
-	private static File footerFile;
-	private static File outputDir;
-		
-	private static void printUsage(){
-		System.out.println("Reference Policy Documentation Compiler usage:");
-		System.out.println("\tjava -cp ./src Docgen [-h] [-v] -xf xmlFileIn -hf headerFile -ff footerFile -od outDirectory");
-		System.out.println("-h display this message and exit");
-		System.out.println("-xf XML file to parse");
-		System.out.println("-hf header file for HTML output");
-		System.out.println("-ff footer file for HTML output");
-		System.out.println("-od output directory");
-		System.exit(1);
-	}
-	
-	/**
-	 * Docgen constructor
-	 * 
-	 * @param output	Filename to setup for output
-	 */
-	public Docgen(String output) 
-	throws FileNotFoundException {
-	}
-	
-	/**
-	 * The main() driver for the policy documentation generator.
-	 * @param argv	Arguments, takes 1 filename parameter
-	 */
-	public static void main(String argv[]) {
-		if (argv.length == 0){
-			printUsage();
-			System.exit(1);
-		}
-		// hacked up version of getopt()
-		for (int x=0; x < argv.length; x++){
-			if (argv[x].equals("-xf")){
-				x++;
-				if (x<argv.length){
-					xmlFile = new File(argv[x]);
-					if (!xmlFile.isFile()){
-						printUsage();
-						System.err.println("XML file is not really a file!");
-						System.exit(1);
-					}
-				} else {
-					printUsage();
-					System.exit(1);
-				}
-			} else if (argv[x].equals("-hf")){
-				x++;
-				if (x<argv.length){
-					headerFile = new File(argv[x]);
-					if (!headerFile.isFile()){
-						printUsage();
-						System.err.println("Header file is not really a file!");
-						System.exit(1);
-					}
-				} else {
-					printUsage();
-					System.exit(1);
-				}
-			} else if (argv[x].equals("-ff")){
-				x++;
-				if (x<argv.length){
-					footerFile = new File(argv[x]);
-					if (!footerFile.isFile()){
-						printUsage();
-						System.err.println("Footer file is not really a file!");
-						System.exit(1);
-					}
-				} else {
-					printUsage();
-					System.exit(1);
-				}
-			} else if (argv[x].equals("-od")){
-				x++;
-				if (x<argv.length){
-					outputDir = new File(argv[x]);
-					if (!outputDir.isDirectory()){
-						printUsage();
-						System.err.println("Output directory is not really a directory!");
-						System.exit(1);
-					}
-				} else {
-					printUsage();
-					System.exit(1);
-				}
-			} else if (argv[x].equals("-h")){
-				printUsage();
-				System.exit(1);
-			} else if (argv[x].equals("-v")){
-				verbose = true;
-			} else {
-				printUsage();
-				System.out.println("Error unknown argument: " + argv[x]);
-				System.exit(1);
-			}
-		}
-		
-		try {
-			// create document factory 
-			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-			Schema schema = schemaFactory.newSchema();
-			
-			factory.setValidating(true);   
-			factory.setNamespaceAware(true);
-
-			// in order for this setting to hold factory must be validating
-			factory.setIgnoringElementContentWhitespace(true);
-
-			// get builder from factory
-			DocumentBuilder builder = factory.newDocumentBuilder();
-				
-			// create an anonymous error handler for parsing errors
-			builder.setErrorHandler(
-					new org.xml.sax.ErrorHandler() {
-						// fatal errors
-						public void fatalError(SAXParseException exception)
-						throws SAXException {
-							throw exception;
-						}
-						
-						// parse exceptions will be fatal
-						public void error(SAXParseException parseErr)
-						throws SAXParseException
-						{
-							// Error generated by the parser
-							System.err.println("\nPARSE ERROR: line " + parseErr.getLineNumber() 
-									+  ", URI " + parseErr.getSystemId());
-							System.err.println("PARSE ERROR: " + parseErr.getMessage() );
-							
-							// check the wrapped exception
-							Exception  x = parseErr;
-							if (parseErr.getException() != null)
-								x = parseErr.getException();
-							x.printStackTrace();					}
-						
-						// dump warnings too
-						public void warning(SAXParseException err)
-						throws SAXParseException
-						{
-							System.err.println("\nPARSE WARNING: line " + err.getLineNumber()
-									+ ", URI " + err.getSystemId());
-							System.err.println("PARSE WARNING:   " + err.getMessage());
-						}
-					}
-			);
-			
-			Docgen redoc = new Docgen(argv[1]);
-
-			redoc.dom = builder.parse(xmlFile);
-			
-			// do our own transformations
-			redoc.processDocumentNode();
-			
-			// build our own converter then convert
-			Converter converter = new Converter(redoc.policy, headerFile, footerFile);
-			converter.Convert(outputDir);
-		// TODO: figure out which of these is taken care of by the anonymous error handler above
-		} catch (SAXException saxErr) {
-			// sax error
-			Exception  x = saxErr;
-			if (saxErr.getException() != null)
-				x = saxErr.getException();
-			x.printStackTrace();
-		} catch (ParserConfigurationException parseConfigErr) {
-			// Sometimes we can't build the parser with the specified options
-			parseConfigErr.printStackTrace();
-		} catch (IOException ioe) {
-			// I/O error
-			ioe.printStackTrace();
-		} catch (Exception err) {
-			err.printStackTrace();
-		}
-		
-
-	} // main
-
-	public static void Debug(String msg){
-		if (verbose)
-			System.out.println(msg);
-	}
-	
-	void processDocumentNode() throws SAXException{
-		Element docNode = dom.getDocumentElement();
-		
-		if (docNode != null && docNode.getNodeName().equals("policy")){
-			policy = new Policy("policy");
-			
-			NodeList children = docNode.getChildNodes();
-			int len = children.getLength();
-		
-			for (int index = 0; index < len; index++){
-				processNode(children.item(index), policy);
-			}
-		} else {
-			System.err.println("Failed to find document/policy node!");
-			System.exit(1);
-		}
-	}
-	
-	/**
-	 * Process children of the policy node (aka modules).
-	 * 
-	 * @param node		A child node of the policy.
-	 * @param parent	The parent PolicyElement.
-	 */
-	void processNode(Node node, Policy parent) throws SAXException{
-		Layer layer = null;
-		Module module = null;
-		
-		// save us from null pointer de-referencing
-		if (node == null){
-			System.err.println(
-			"Nothing to do, node is null");
-			return;
-		}
-		
-		// snag the name
-		String nodeName = node.getNodeName();
-		
-		// validity check and pull layer attribute
-		if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals("module")){
-			// display the name which might be generic
-			Docgen.Debug("Encountered node: " + nodeName);
-			NamedNodeMap attrList =	node.getAttributes();
-			
-			// the required attributes
-			int attrLen = 0;
-			if(attrList != null){
-				attrLen = attrList.getLength();
-			} else{
-				fatalNodeError("Missing attributes in module. \""  
-						+ "\".  \"layer\" and \"name\" are required attributes.");
-			}
-
-			Node moduleNode = attrList.getNamedItem("name");
-			Node layerNode = attrList.getNamedItem("layer");
-			
-			if (moduleNode == null || layerNode == null)
-				fatalNodeError("Missing attributes in module element.  \"layer\" and \"name\" are required attributes.");
-
-			String moduleName = moduleNode.getNodeValue();
-			String layerName = layerNode.getNodeValue();
-		
-			// check to see if this is a new layer or a pre-existing layer
-			layer = parent.Children.get(layerName);
-			if (layer == null){
-					Docgen.Debug("Adding new layer: " + layerName);
-					layer = new Layer(layerName, parent);	
-			} else {
-				Docgen.Debug("Lookup succeeded for: " + layerName);
-			}
-			
-			if (layer.Children.containsKey(moduleName)){
-				Docgen.Debug("Reusing previously defined module: " + moduleName);
-				module = layer.Children.get(moduleName);
-			} else {
-				Docgen.Debug("Creating module: " + moduleName);
-				module = new Module(moduleName, layer);
-			}
-			
-			// take care of the attributes
-			for(int i = 0; i < attrLen; i++){
-				Node attrNode = attrList.item(i);
-				String attrName = attrNode.getNodeName();
-				String attrValue = attrNode.getNodeValue();
-				if (!attrName.equals("layer") && !attrName.equals("name")){
-					Docgen.Debug("\tAdding attribute: " + attrNode.getNodeName()
-							+ "=" + attrValue);
-					module.AddAttribute(attrName,attrValue);
-				}
-			}
-		} else if (!isEmptyTextNode(node)){
-			fatalNodeError("Unexpected child \"" + nodeName 
-					+"\" node of parent \"" + parent.Name + "\".");
-		}
-		
-		// recurse over children if both module and layer defined
-		if (module != null && layer != null){
-			// the containsKey check verified no duplicate module
-			layer.Children.put(module.Name, module);
-			parent.Children.put(layer.Name, layer);
-
-			NodeList children = node.getChildNodes();
-			if (children != null){
-				int len = children.getLength();
-				for (int index = 0; index < len; index++){
-					processNode(children.item(index), module);
-				}
-			}
-		}
-	}
-	
-	/**
-	 * Process children of the module node (aka interfaces).
-	 * 
-	 * @param node		A child node of the policy.
-	 * @param parent	The parent PolicyElement.
-	 */
-	void processNode(Node node, Module parent) throws SAXException{
-		Interface iface = null;
-		
-		// save us from null pointer de-referencing
-		if (node == null){
-			System.err.println(
-			"Nothing to do, node is null");
-			return;
-		}
-		
-		// snag the name
-		String nodeName = node.getNodeName();
-		
-		// if summary node
-		if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals("summary")){
-			// unfortunately we still need to snag the PCDATA child node for the actual text
-			Docgen.Debug("Encountered node: " + nodeName);
-			NodeList children = node.getChildNodes();
-			if (children != null && children.getLength() == 1){
-				if (children.item(0).getNodeType() == Node.TEXT_NODE){
-					parent.PCDATA = children.item(0).getNodeValue();
-					return;
-				} 
-			}
-			fatalNodeError("Unexpected child \"" + nodeName 
-					+"\" node of parent \"" + parent.Name + "\".");
-		// if interface node
-		} else if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals("interface")){
-			NamedNodeMap attrList =	node.getAttributes();
-			// the required attributes
-			int attrLen = 0;
-			if(attrList != null){
-				attrLen = attrList.getLength();
-			} else{
-				fatalNodeError("Missing attribute in interface.  " 
-						+ "\"name\" is a required attribute.");
-			}
-
-			Node nameNode = attrList.getNamedItem("name");
-						
-			if (nameNode == null )
-				fatalNodeError("Missing attribute in interface.  " 
-						+ "\"name\" is a required attribute.");
-
-
-			String iName = nameNode.getNodeValue();
-		
-			Docgen.Debug("Creating interface: " + iName);
-			iface = new Interface(iName, parent);
-			
-			// take care of the attributes
-			for(int i = 0; i < attrLen; i++){
-				Node attrNode = attrList.item(i);
-				String attrName = attrNode.getNodeName();
-				String attrValue = attrNode.getNodeValue();
-				if (!attrName.equals("name")){
-					Docgen.Debug("\tAdding attribute: " + attrNode.getNodeName()
-							+ "=" + attrValue);
-					iface.AddAttribute(attrName,attrValue);
-				}
-			}
-		} else if (!isEmptyTextNode(node)){
-			fatalNodeError("Unexpected child \"" + nodeName 
-					+"\" node of parent \"" + parent.Name + "\".");
-		}
-		
-		// recurse over children if both module and layer defined
-		if (iface != null && parent != null){
-			// FIXME: containsKey() check for duplicate
-			parent.Children.put(iface.Name, iface);
-
-			NodeList children = node.getChildNodes();
-			if (children != null){
-				int len = children.getLength();
-				for (int index = 0; index < len; index++){
-					processNode(children.item(index), iface);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Process children of the interface node (aka parameters, desc., infoflow).
-	 * 
-	 * @param node		A child node of the policy.
-	 * @param parent	The parent PolicyElement.
-	 */
-	void processNode(Node node, Interface parent) throws SAXException{
-		Parameter param = null;
-		
-		// save us from null pointer de-referencing
-		if (node == null){
-			System.err.println(
-			"Nothing to do, node is null");
-			return;
-		}
-		
-		// snag the name
-		String nodeName = node.getNodeName();
-		
-		// if description node
-		if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals("description")){
-			// unfortunately we still need to snag the PCDATA child node for the actual text
-			NodeList children = node.getChildNodes();
-			if (children != null && children.getLength() == 1){
-				if (children.item(0).getNodeType() == Node.TEXT_NODE){
-					parent.PCDATA = children.item(0).getNodeValue();
-					return;
-				} 
-			}
-			fatalNodeError("Unexpected child \"" + nodeName 
-					+"\" node of parent \"" + parent.Name + "\".");
-		// if infoflow node
-		} else if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals("infoflow")){
-			NamedNodeMap attrList =	node.getAttributes();
-			// the required attributes
-			int attrLen = 0;
-			if(attrList != null){
-				attrLen = attrList.getLength();
-			} else{
-				fatalNodeError("Missing attribute in infoflow." 
-						+ "  \"type\" and \"weight\" are required attributes.");
-			}
-
-			Node typeNode = attrList.getNamedItem("type");
-			Node weightNode = attrList.getNamedItem("weight");
-				
-			String type = typeNode.getNodeValue();
-			if (typeNode == null || 
-					(!type.equals("none") && weightNode == null))
-				fatalNodeError("Missing attribute in infoflow." 
-						+ "  \"type\" and \"weight\" are required attributes (unless type is none).");
-
-			if (type.equals("read")){
-				parent.Type = InterfaceType.Read;
-				parent.Weight = Integer.parseInt(weightNode.getNodeValue());
-			}else if (type.equals("write")){
-				parent.Type = InterfaceType.Write;
-				parent.Weight = Integer.parseInt(weightNode.getNodeValue());
-			}else if (type.equals("both")){
-				parent.Type = InterfaceType.Both;
-				parent.Weight = Integer.parseInt(weightNode.getNodeValue());
-			}else if (type.equals("none")){
-				parent.Type = InterfaceType.None;
-				parent.Weight = -1;
-			} else {
-				System.err.println("Infoflow type must be read, write, both, or none!"); 
-			}
-			
-		} else if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals("parameter")){
-			NamedNodeMap attrList =	node.getAttributes();
-			// the required attributes
-			int attrLen = 0;
-			if(attrList != null){
-				attrLen = attrList.getLength();
-			} else{
-				fatalNodeError("Missing attribute in parameter \"" 
-						+ "\".  \"name\" is a required attribute.");
-			}
-
-			Node nameNode = attrList.getNamedItem("name");
-						
-			if (nameNode == null )
-				fatalNodeError("Missing attribute in parameter \"" 
-						+ "\".  \"name\" is a required attribute.");
-
-			String paramName = nameNode.getNodeValue();
-		
-			Docgen.Debug("Creating parameter: " + paramName);
-			param = new Parameter(paramName, parent);
-
-			// unfortunately we still need to snag the PCDATA child node for the actual text
-			NodeList children = node.getChildNodes();
-			if (children != null && children.getLength() == 1){
-				if (children.item(0).getNodeType() == Node.TEXT_NODE){
-					param.PCDATA = children.item(0).getNodeValue();
-				} 
-			} else {
-				fatalNodeError("Unexpected child \"" 
-						+"\" node of parameter.");
-			}
-				
-			// take care of the attributes
-			for(int i = 0; i < attrLen; i++){
-				Node attrNode = attrList.item(i);
-				String attrName = attrNode.getNodeName();
-				String attrValue = attrNode.getNodeValue();
-				if (!attrName.equals("name")){
-					Docgen.Debug("\tAdding attribute: " + attrNode.getNodeName()
-							+ "=" + attrValue);
-					param.AddAttribute(attrName,attrValue);
-				}
-			}
-		} else if (!isEmptyTextNode(node)){
-			fatalNodeError("Unexpected child \"" + nodeName 
-					+"\" node of parent \"" + parent.Name + "\".");
-		}
-		
-		// recurse over children if both parent and param defined
-		if (param != null && parent != null){
-			// the containsKey check verified no duplicate module
-			// FIXME: containsKey() check for duplicate
-			parent.Children.put(param.Name, param);
-		}
-	}
-
-	public boolean isEmptyTextNode(Node node){
-		/*
-		 * FIXME: remove once properly validating
-		 * Since we aren't validating yet we needed our
-		 * own pointless whitespace remover.
-		 */
-
-		if (node.getNodeType() == Node.TEXT_NODE &&
-				node.getNodeValue().trim().length() == 0)
-				return true;
-		return false;
-	}	
-	
-	public void fatalNodeError(String msg) 
-	throws SAXException {
-		// FIXME: figure out how to throw SAXParseException w/ location
-		throw new SAXException(msg);
-	}
-}
diff --git a/refpolicy/doc/doctools/src/policy/Interface.java b/refpolicy/doc/doctools/src/policy/Interface.java
deleted file mode 100644
index 6014adf..0000000
--- a/refpolicy/doc/doctools/src/policy/Interface.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Interface.java: The reference policy interfaces
- * Version: @version@ 
- */
-package policy;
-
-import java.util.Map;
-import java.util.TreeMap;
- 
-/**
- * Each reference policy interface is represented by this class.
- * 
- * @see Layer
- * @see Module
- * @see Parameter
- */
-public class Interface extends PolicyElement {
-	/** the children of this element */
-	public final Map<String,Parameter> Children;
-
-	public InterfaceType Type;
-	public int Weight;
-	
-	/**
-	 * Default constructor assigns name to module.
-	 * 
-	 * @param _name		The name of the module.
-	 * @param _Parent 	The reference to the parent element.
-	 */
-	public Interface(String _name, Module _Parent){
-		super(_name, _Parent);
-		Children = new TreeMap<String,Parameter>();
-	}	
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/policy/InterfaceType.java b/refpolicy/doc/doctools/src/policy/InterfaceType.java
deleted file mode 100644
index 0a102c5..0000000
--- a/refpolicy/doc/doctools/src/policy/InterfaceType.java
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Interface.java: The reference policy interface types
- * Version: @version@ 
- */
-package policy;
-
-public enum InterfaceType {
-	Read, Write, Both, None;
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/policy/Layer.java b/refpolicy/doc/doctools/src/policy/Layer.java
deleted file mode 100644
index b232a38..0000000
--- a/refpolicy/doc/doctools/src/policy/Layer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Layer.java: The reference policy layers		
- * Version: @version@ 
- */
-package policy;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Each reference policy layer is represented by this class.
- * 
- * @see Module
- * @see Interface
- * @see Parameter
- */
-public class Layer extends PolicyElement {
-	/** the children of this element */
-	public final Map<String,Module> Children;
-	
-	/**
-	 * Default constructor assigns name to layer.
-	 * 
-	 * @param _name		The name of the layer.
-	 * @param _Parent 	The reference to the parent element.
-	 */
-	public Layer(String _name, Policy _Parent){
-		super(_name, _Parent);
-		Children = new TreeMap<String, Module>();
-	}
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/policy/Module.java b/refpolicy/doc/doctools/src/policy/Module.java
deleted file mode 100644
index 3bb0c22..0000000
--- a/refpolicy/doc/doctools/src/policy/Module.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Module.java: The reference policy module		
- * Version: @version@ 
- */
-package policy;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Each reference policy layer is represented by this class.
- * 
- * @see Layer
- * @see Interface
- * @see Parameter
- */
-public class Module extends PolicyElement {
-	/** the children of this element */
-	public final Map<String,Interface> Children;
-		
-	/**
-	 * Default constructor assigns name to module.
-	 * 
-	 * @param _name		The name of the module.
-	 * @param _Parent 	The reference to the parent element.
-	 */
-	public Module(String _name, Layer _Parent){
-		super(_name, _Parent);
-		Children = new TreeMap<String,Interface>();
-	}
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/policy/Parameter.java b/refpolicy/doc/doctools/src/policy/Parameter.java
deleted file mode 100644
index 0f0ee45..0000000
--- a/refpolicy/doc/doctools/src/policy/Parameter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Parameter.java: The reference policy interface parameters
- * Version: @version@ 
- */
-package policy;
- 
-/**
- * Each reference policy layer is represented by this class.
- * 
- * @see Layer
- * @see Module
- * @see Interface
- */
-public class Parameter extends PolicyElement{
-	
-	/**
-	 * Default constructor assigns name to parameter.
-	 * 
-	 * @param _name		The name of the parameter.
-	 * @param _Parent 	The reference to the parent element.
-	 */
-	public Parameter(String _name, Interface _Parent){
-		super(_name, _Parent);
-	}
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/policy/Policy.java b/refpolicy/doc/doctools/src/policy/Policy.java
deleted file mode 100644
index e17ff1f..0000000
--- a/refpolicy/doc/doctools/src/policy/Policy.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * Policy.java: The reference policy api		
- * Version: @version@ 
- */
-package policy;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Each reference policy layer is represented by this class.
- * 
- * @see Module
- * @see Interface
- * @see Parameter
- */
-public class Policy extends PolicyElement {
-	/** the children of this element */
-	public final Map<String,Layer> Children;
-	
-	/**
-	 * Default constructor assigns name to layer.
-	 * 
-	 * @param _name		The name of the layer.
-	 * @param _Parent 	The reference to the parent element.
-	 */
-	public Policy(String _name){
-		// the policy is the root element so parent==null
-		super(_name, null);
-		Children = new TreeMap<String,Layer>();
-	}	
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/src/policy/PolicyElement.java b/refpolicy/doc/doctools/src/policy/PolicyElement.java
deleted file mode 100644
index f5fc913..0000000
--- a/refpolicy/doc/doctools/src/policy/PolicyElement.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Copyright (C) 2005 Tresys Technology, LLC
- * License: refer to COPYING file for license information.
- * Authors: Spencer Shimko <sshimko@tresys.com>
- * 
- * PolicyElement.java: The reference policy base class		
- * Version: @version@ 
- */
-package policy;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Reference policy elements have certain similarties which
- * should be inherited from a base class.  This includes a name
- * attribute that will be used for hashing, sorting, and converting
- * to a string.  
- * 
- * @see Layer
- * @see Module
- * @see Interface
- * @see Parameter
- */
-public abstract class PolicyElement {
-	/** the string identifying the element */
-	public final String Name;
-	/** the parent component */
-	public final PolicyElement Parent;
-
-	/** the attributes of this element */
-	private final Map<String,String> attributes;
-	
-	public String PCDATA;
-
-	/**
-	 * Default constructor assigns name.
-	 * 
-	 * @param _name		The name of the element.
-	 * @param _Parent 	The reference to the parent element.
-	 */
-	public PolicyElement(String _name, PolicyElement _Parent){
-		Name = _name;
-		Parent = _Parent;
-		attributes = new TreeMap<String,String>();
-	}
-	
-	/**
-	 * Add attribute to policy element.
-	 * 
-	 * @param aName		String to identify attribute
-	 * @param aString 	Value of attribute identified by string aName
-	 * @return 			<code>true</code> when attribute added to element,
-	 * 					<code>false</code> when attribute already defined for element 
-	 */
-	public boolean AddAttribute(String aName, String aString){
-		if (attributes.containsKey(aName)){
-			return false;
-		}
-		attributes.put(aName,aString);
-		return true;
-	}
-	
-	/**
-	 * Get attribute from policy element.
-	 * 
-	 * @param aName		String to identify attribute
-	 * @return 			String value associated with named attribute
-	 * 					or <code>null</code> if no attribute defined
-	 * 					for aName. 
-	 */
-	public String GetAttribute(String aName){
-		return attributes.get(aName);
-	}
-
-	/**
-	 * Overridden equals method
-	 * 
-	 * @param obj	Object for comparison
-	 */
-	@Override public boolean equals(Object obj){
-		return obj.toString().equals(this.Name);
-	}
-
-	/**
-	 * Return a hashcode for the element. Currently implemented as a 
-	 * call to the String hashCode() method.
-	 * 
-	 * @return integer hashCode of this instance assuring two objects that
-	 * 		   are == will return same hashcode.
-	 */
-	@Override public int hashCode() {
-		return this.toString().hashCode();
-	}
-	
-	/**
-	 * Overridden toString() method.
-	 * 
-	 * @return String representation of instance (it's name).
-	 */
-	@Override public String toString(){
-			return Name;
-	}		
-	
-	/**
-	 * Since Component might be used as a key in some type of sort Compare
-	 * is implemented.
-	 * 
-	 * @return	0 if this==that, <0 if this<that, >0 if this>that
-	 * @see String.compareTo
-	 */
-	public int compareTo(Layer that){
-		return Name.compareTo(that.Name);
-	}
-}
\ No newline at end of file
diff --git a/refpolicy/doc/doctools/style.css b/refpolicy/doc/doctools/style.css
deleted file mode 100644
index 3805bf8..0000000
--- a/refpolicy/doc/doctools/style.css
+++ /dev/null
@@ -1,152 +0,0 @@
-body {
-	margin:0px;
-	padding:0px;
-	font-family:verdana, arial, helvetica, sans-serif;
-	color:#333;
-	background-color:white;
-	}
-h1 {
-	margin:0px 0px 15px 0px;
-	padding:0px;
-	font-size:28px;
-	line-height:28px;
-	font-weight:900;
-	color:#ccc;
-	}
-h2 {
-	font-size:100%;
-	}
-h3 {
-	font-size:75%;
-	}
-h4 {
-	font-size:67%;
-	}
-li {
-	font:11px/20px verdana, arial, helvetica, sans-serif;
-	margin:0px 0px 0px 0px;
-	padding:0px;
-	}
-p {
-	/* normal */
-	font:11px/20px verdana, arial, helvetica, sans-serif;
-	margin:0px 0px 16px 0px;
-	padding:0px;
-	}
-        
-tt {
-	/* inline code */
-	font-family: monospace;
-	}
-        
-table {
-        background-color:#eee;
-        border:1px dashed #999;
-        /*background-color: white;*/
-        color: black;
-        text-align: left;
-	font:11px/20px verdana, arial, helvetica, sans-serif;
-        margin-left: 10%;
-        margin-right: 10%;
-}
-
-th {
-        background-color: #ccccff;
-        text-align: center;
-}
-
-td.header {
-        font-weight: bold;
-}
-        
-#Content>p {margin:0px;}
-#Content>p+p {text-indent:30px;}
-a {
-	color:#09c;
-	font-size:11px;
-	text-decoration:none;
-	font-weight:600;
-	font-family:verdana, arial, helvetica, sans-serif;
-	}
-a:link {color:#09c;}
-a:visited {color:#07a;}
-a:hover {background-color:#eee;}
-
-#Codeblock {
-	margin:5px 50px 5px 50px;
-	padding:5px 0px 5px 15px;
-	border-style:solid;
-	border-color:black;
-	border-width:1px 1px 1px 1px;
-	background-color:#f8f8f8;
-	font-size:11px;
-	font-weight:600;
-	text-decoration:none;
-	font-family:courier;
-}
-pre {
-	font-size:11px;
-	font-weight:600;
-	text-decoration:none;
-	font-family:courier;
-}
-pre.codeblock {
-        /* code block (bordered, slight gray background) */
-	border-style:solid;
-	border-color:black;
-	border-width:1px 1px 1px 1px;
-	background-color:#f8f8f8;
-        margin-left: 10%;
-        margin-right: 10%;
-}
-dl {
-	/* definition text block */
-	font:11px/20px verdana, arial, helvetica, sans-serif;
-	margin:0px 0px 16px 0px;
-	padding:0px;
-	}
-dt {
-	/* definition term */
-        font-weight: bold;
-	}
-
-#Header {
-	margin:50px 0px 10px 0px;
-	padding:17px 0px 0px 20px;
-	/* For IE5/Win's benefit height = [correct height] + [top padding] + [top and bottom border widths] */
-	height:33px; /* 14px + 17px + 2px = 33px */
-	border-style:solid;
-	border-color:black;
-	border-width:1px 0px; /* top and bottom borders: 1px; left and right borders: 0px */
-	line-height:11px;
-	font-size:110%;
-	background-color:#eee;
-	voice-family: "\"}\"";
-	voice-family:inherit;
-	height:14px; /* the correct height */
-	}
-body>#Header {height:14px;}
-#Content {
-	margin:0px 50px 50px 200px;
-	padding:10px;
-	}
-
-#Menu {
-	position:absolute;
-	top:100px;
-	left:20px;
-	width:162px;
-	padding:10px;
-	background-color:#eee;
-	border:1px dashed #999;
-	line-height:17px;
-	text-align:left;	
-	voice-family: "\"}\"";
-	voice-family:inherit;
-	width:160px;
-	}
-#Menu subitem {
-	font-size: 5px;
-}
-
-body>#Menu {width:160px;}