diff --git a/src/org/apache/xalan/xsltc/compiler/Parser.java b/src/org/apache/xalan/xsltc/compiler/Parser.java
index 779225a..214ea05 100644
--- a/src/org/apache/xalan/xsltc/compiler/Parser.java
+++ b/src/org/apache/xalan/xsltc/compiler/Parser.java
@@ -117,16 +117,16 @@
     private Hashtable   _variableScope;
     private Stylesheet  _currentStylesheet;
     private SymbolTable _symbolTable; // Maps QNames to syntax-tree nodes
-    private Output      _output = null;
+    private Output      _output;
     private Template    _template;    // Reference to the template being parsed.
 
-    private boolean     _rootNamespaceDef = false; // Used for validity check
+    private boolean     _rootNamespaceDef; // Used for validity check
 
-    private SyntaxTreeNode _root = null;
+    private SyntaxTreeNode _root;
 
     private String _target;
 
-    private int _currentImportPrecedence = 1;
+    private int _currentImportPrecedence;
 
     public Parser(XSLTC xsltc) {
 	_xsltc = xsltc;
@@ -144,6 +144,9 @@
 	_symbolTable         = new SymbolTable();
 	_xpathParser         = new XPathParser(this);
 	_currentStylesheet   = null;
+        _output              = null;
+        _root                = null;
+        _rootNamespaceDef    = false;
 	_currentImportPrecedence = 1;
 	
 	initStdClasses();
diff --git a/src/org/apache/xalan/xsltc/compiler/XSLTC.java b/src/org/apache/xalan/xsltc/compiler/XSLTC.java
index fe6d00f..f05a048 100644
--- a/src/org/apache/xalan/xsltc/compiler/XSLTC.java
+++ b/src/org/apache/xalan/xsltc/compiler/XSLTC.java
@@ -165,10 +165,10 @@
     /**
      * Only for user by the internal TrAX implementation.
      */
-    public void setParser(Parser parser) {
-	_parser = parser;
+    public Parser getParser() {
+        return _parser;
     }
-
+    
     /**
      * Only for user by the internal TrAX implementation.
      */
diff --git a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
index 44f4a8b..44ed3cc 100644
--- a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
@@ -76,14 +76,17 @@
 import org.apache.xalan.xsltc.compiler.SyntaxTreeNode;
 import org.apache.xalan.xsltc.compiler.XSLTC;
 
+import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.Attributes;
 
 /**
  * Implementation of a JAXP1.1 TemplatesHandler
  */
-public class TemplatesHandlerImpl extends Parser
-    implements TemplatesHandler, SourceLoader
+public class TemplatesHandlerImpl 
+    implements ContentHandler, TemplatesHandler, SourceLoader
 {
     /**
      * System ID for this stylesheet.
@@ -105,6 +108,11 @@
      * object belongs to.
      */
     private TransformerFactoryImpl _tfactory = null;
+    
+    /**
+     * A reference to XSLTC's parser object.
+     */
+    private Parser _parser = null;
 
     /**
      * Default constructor
@@ -112,22 +120,14 @@
     protected TemplatesHandlerImpl(int indentNumber,
 	TransformerFactoryImpl tfactory)
     {
-	super(null);
 	_indentNumber = indentNumber;
 	_tfactory = tfactory;
-    }
-
-    /**
-     * Internal initialization
-     */
-    public void init() {
-	// Create and initialize a stylesheet compiler
-	final XSLTC xsltc = new XSLTC();
-	super.setXSLTC(xsltc);
-	xsltc.init();
-	super.init();
-	xsltc.setParser(this);
-	xsltc.setOutputType(XSLTC.BYTEARRAY_OUTPUT);
+    
+        // Initialize a parser object
+        XSLTC xsltc = new XSLTC();
+        xsltc.init();
+        xsltc.setOutputType(XSLTC.BYTEARRAY_OUTPUT);
+        _parser = xsltc.getParser();
     }
 
     /**
@@ -168,7 +168,7 @@
      */
     public Templates getTemplates() {
 	try {
-	    final XSLTC xsltc = getXSLTC();
+	    XSLTC xsltc = _parser.getXSLTC();
 
 	    // Set a document loader (for xsl:include/import) if defined
 	    if (_uriResolver != null) {
@@ -189,25 +189,25 @@
 	    transletName = xsltc.getClassName();
 
 	    Stylesheet stylesheet = null;
-	    SyntaxTreeNode root = getDocumentRoot();
+	    SyntaxTreeNode root = _parser.getDocumentRoot();
 
 	    // Compile the translet - this is where the work is done!
-	    if (!errorsFound() && root != null) {
+	    if (!_parser.errorsFound() && root != null) {
 		// Create a Stylesheet element from the root node
-		stylesheet = makeStylesheet(root);
+		stylesheet = _parser.makeStylesheet(root);
 		stylesheet.setSystemId(_systemId);
 		stylesheet.setParentStylesheet(null);
-		setCurrentStylesheet(stylesheet);
+		_parser.setCurrentStylesheet(stylesheet);
 
 		// Set it as top-level in the XSLTC object
 		xsltc.setStylesheet(stylesheet);
 
 		// Create AST under the Stylesheet element
-		createAST(stylesheet);
+		_parser.createAST(stylesheet);
 	    }
 
 	    // Generate the bytecodes and output the translet class(es)
-	    if (!errorsFound() && stylesheet != null) {
+	    if (!_parser.errorsFound() && stylesheet != null) {
 		stylesheet.setMultiDocument(xsltc.isMultiDocument());
 
                 // Class synchronization is needed for BCEL
@@ -216,13 +216,13 @@
                 }
 	    }
 
-	    if (!errorsFound()) {
+	    if (!_parser.errorsFound()) {
 		// Check that the transformation went well before returning
 		final byte[][] bytecodes = xsltc.getBytecodes();
 		if (bytecodes != null) {
 		    final TemplatesImpl templates =
 			new TemplatesImpl(xsltc.getBytecodes(), transletName,
-			    getOutputProperties(), _indentNumber, _tfactory);
+			    _parser.getOutputProperties(), _indentNumber, _tfactory);
 
 		    // Set URIResolver on templates object
 		    if (_uriResolver != null) {
@@ -239,16 +239,6 @@
     }
 
     /**
-     * Recieve an object for locating the origin of SAX document events.
-     * Most SAX parsers will use this method to inform content handler
-     * of the location of the parsed document.
-     */
-    public void setDocumentLocator(Locator locator) {
-	super.setDocumentLocator(locator);
-  	setSystemId(locator.getSystemId());
-    }
-
-    /**
      * This method implements XSLTC's SourceLoader interface. It is used to
      * glue a TrAX URIResolver to the XSLTC compiler's Input and Import classes.
      *
@@ -270,6 +260,89 @@
 	}
 	return null;
     }
+    
+    // -- ContentHandler --------------------------------------------------
+    
+    /**
+     * Re-initialize parser and forward SAX2 event.
+     */
+    public void startDocument() {
+        _parser.init();
+        _parser.startDocument();
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void endDocument() { 
+        _parser.endDocument();
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void startPrefixMapping(String prefix, String uri) {
+        _parser.startPrefixMapping(prefix, uri);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void endPrefixMapping(String prefix) { 
+        _parser.endPrefixMapping(prefix);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void startElement(String uri, String localname, String qname, 
+        Attributes attributes) throws SAXException 
+    {
+        _parser.startElement(uri, localname, qname, attributes);
+    }
+    
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void endElement(String uri, String localname, String qname) {
+        _parser.endElement(uri, localname, qname);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void characters(char[] ch, int start, int length) {
+        _parser.characters(ch, start, length);
+    }
+    
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void processingInstruction(String name, String value) {
+        _parser.processingInstruction(name, value);
+    }
+    
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void ignorableWhitespace(char[] ch, int start, int length) { 
+        _parser.ignorableWhitespace(ch, start, length);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void skippedEntity(String name) { 
+        _parser.skippedEntity(name);
+    }
+
+    /**
+     * Set internal system Id and forward SAX2 event to parser object.
+     */
+    public void setDocumentLocator(Locator locator) {
+        setSystemId(locator.getSystemId());
+        _parser.setDocumentLocator(locator);
+    }
 }
 
 
diff --git a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
index 54bab46..bbfad2c 100644
--- a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
@@ -764,7 +764,6 @@
     { 
 	final TemplatesHandlerImpl handler = 
 	    new TemplatesHandlerImpl(_indentNumber, this);
-	handler.init();
 	if (_uriResolver != null) {
 	    handler.setURIResolver(_uriResolver);
 	}
