diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
index 337ff03..981e511 100644
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -41,7 +41,7 @@
             Node.allnodes[index]=repr( self.__dict__ )
             if Node.debug==None:
                 Node.debug=StringIO()
-		#open( "debug4.out", "w" )
+                #open( "debug4.out", "w" )
             Node.debug.write( "create %s\n"%index )
 
     def __getattr__( self, key ):
@@ -230,7 +230,7 @@
         else:
             assert isinstance( value, Attr ) or type( value )==types.StringType
             node=value
-	old=self._attrs.get( attname, None)
+        old=self._attrs.get( attname, None)
         if old:
             old.unlink()
         self._attrs[node.name]=node
diff --git a/Lib/xml/dom/pulldom.py b/Lib/xml/dom/pulldom.py
index 0c047f6..1f7c699 100644
--- a/Lib/xml/dom/pulldom.py
+++ b/Lib/xml/dom/pulldom.py
@@ -22,7 +22,7 @@
 
     def setDocumentLocator( self, locator ): pass
 
-    def startElement( self, tagName , attrs  ):
+    def startElement( self, name, tagName , attrs  ):
         if not hasattr( self, "curNode" ):
             # FIXME: hack!
             self.startDocument( )
@@ -42,7 +42,7 @@
         self.lastEvent=self.lastEvent[1]
         #self.events.append( (START_ELEMENT, node) )
 
-    def endElement( self, name ):
+    def endElement( self, name, tagName ):
         node = self.curNode
         self.lastEvent[1]=[(END_ELEMENT, node), None ]
         self.lastEvent=self.lastEvent[1]
diff --git a/Lib/xml/sax/expatreader.py b/Lib/xml/sax/expatreader.py
index b6816a4..f7517b1 100644
--- a/Lib/xml/sax/expatreader.py
+++ b/Lib/xml/sax/expatreader.py
@@ -101,8 +101,8 @@
             self._parser.EndElementHandler = self.end_element_ns
         else:
             self._parser = pyexpat.ParserCreate()
-            self._parser.StartElementHandler = self._cont_handler.startElement
-            self._parser.EndElementHandler = self._cont_handler.endElement
+            self._parser.StartElementHandler = self.start_element
+            self._parser.EndElementHandler = self.end_element
 
         self._parser.ProcessingInstructionHandler = \
                                     self._cont_handler.processingInstruction
@@ -133,25 +133,22 @@
     def getSystemId(self):
         return self._parser.GetBase()
     
-    # internal methods
-
     # event handlers
-
     def start_element(self, name, attrs):
-        self._cont_handler.startElement(name, 
+        self._cont_handler.startElement(name, name,
                                  xmlreader.AttributesImpl(attrs, attrs))
 
     def end_element(self, name):
-        self._cont_handler.endElement(name)
+        self._cont_handler.endElement( name, name )
 
     def start_element_ns(self, name, attrs):
         pair = split(name)
         if len(pair) == 1:
-            tup = (None, name, None)
+            tup = (None, name )
         else:
-            tup = pair+[None] # prefix is not implemented yet!
+            tup = pair
 
-        self._cont_handler.startElement(tup,
+        self._cont_handler.startElement(tup, None,
                                         xmlreader.AttributesImpl(attrs, None))        
 
     def end_element_ns(self, name):
@@ -161,11 +158,13 @@
         else:
             name = pair+[None] # prefix is not implemented yet!
             
-        self._cont_handler.endElement(name)
+        self._cont_handler.endElement(name, None)
 
+    # this is not used
     def processing_instruction(self, target, data):
         self._cont_handler.processingInstruction(target, data)
 
+    # this is not used
     def character_data(self, data):
         self._cont_handler.characters(data)
 
