diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index 28ad8e8..5000229 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -535,6 +535,70 @@
     return Py_BuildValue("z", XML_GetBase(self->itself));
 }
 
+static char xmlparse_ExternalEntityParserCreate__doc__[] = 
+"ExternalEntityParserCreate(context, encoding)\n\
+Create a parser for parsing an external entity based on the
+information passed to the ExternalEntityRefHandler.";
+
+static PyObject *
+xmlparse_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
+{
+    char *context;
+    char *encoding = NULL;
+    xmlparseobject *new_parser;
+    int i;
+
+    if (!PyArg_ParseTuple(args, "s|s:ExternalEntityParserCreate", &context,
+			  &encoding)) {
+        return NULL;
+    }
+
+#if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6
+    new_parser = PyObject_NEW(xmlparseobject, &Xmlparsetype);
+    if (new_parser == NULL)
+        return NULL;
+
+    new_parser->returns_unicode = 0;
+#else
+    /* Code for versions 1.6 and later */
+    new_parser = PyObject_New(xmlparseobject, &Xmlparsetype);
+    if (new_parser == NULL)
+        return NULL;
+
+    new_parser->returns_unicode = 1;
+#endif
+    
+    new_parser->itself = XML_ExternalEntityParserCreate(self->itself, context,
+							encoding);    
+    if (!new_parser) {
+        Py_DECREF(new_parser);
+        return PyErr_NoMemory();
+    }
+
+    XML_SetUserData(new_parser->itself, (void *)new_parser);
+
+    /* allocate and clear handlers first */
+    for(i = 0; handler_info[i].name != NULL; i++)
+      /* do nothing */;
+
+    new_parser->handlers = malloc(sizeof(PyObject *)*i);
+    clear_handlers(new_parser);
+
+    /* then copy handlers from self */
+    for (i = 0; handler_info[i].name != NULL; i++) {
+      if (self->handlers[i]) {
+	Py_INCREF(self->handlers[i]);
+	new_parser->handlers[i] = self->handlers[i];
+        handler_info[i].setter(new_parser->itself, 
+			       handler_info[i].handler);
+      }
+    }
+      
+    return new_parser;    
+}
+
+
+
 static struct PyMethodDef xmlparse_methods[] = {
     {"Parse",	  (PyCFunction)xmlparse_Parse,
 	 	  METH_VARARGS,	xmlparse_Parse__doc__},
@@ -544,6 +608,8 @@
 	 	  METH_VARARGS,      xmlparse_SetBase__doc__},
     {"GetBase",   (PyCFunction)xmlparse_GetBase,
 	 	  METH_VARARGS,      xmlparse_GetBase__doc__},
+    {"ExternalEntityParserCreate", (PyCFunction)xmlparse_ExternalEntityParserCreate,
+	 	  METH_VARARGS,      xmlparse_ExternalEntityParserCreate__doc__},
 	{NULL,		NULL}		/* sentinel */
 };
 
