- renamed "tolower" hook (it happened to work with
  my compiler, but not on guido's box...)
diff --git a/Modules/_sre.c b/Modules/_sre.c
index bc3c1d2..21214ed 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -94,7 +94,7 @@
 0, 0, 16, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0 };
 
-static char sre_char_tolower[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+static char sre_char_lower[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
@@ -104,9 +104,9 @@
 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
 120, 121, 122, 123, 124, 125, 126, 127 };
 
-static unsigned int sre_tolower(unsigned int ch)
+static unsigned int sre_lower(unsigned int ch)
 {
-    return ((ch) < 128 ? sre_char_tolower[ch] : ch);
+    return ((ch) < 128 ? sre_char_lower[ch] : ch);
 }
 
 #define SRE_IS_DIGIT(ch)\
@@ -122,7 +122,7 @@
 
 /* locale-specific character predicates */
 
-static unsigned int sre_tolower_locale(unsigned int ch)
+static unsigned int sre_lower_locale(unsigned int ch)
 {
     return ((ch) < 256 ? tolower((ch)) : ch);
 }
@@ -135,7 +135,7 @@
 /* unicode-specific character predicates */
 
 #if defined(HAVE_UNICODE)
-static unsigned int sre_tolower_unicode(unsigned int ch)
+static unsigned int sre_lower_unicode(unsigned int ch)
 {
     return (unsigned int) Py_UNICODE_TOLOWER((Py_UNICODE)(ch));
 }
@@ -497,7 +497,7 @@
 					goto failure;
 				while (p < e) {
 					if (ptr >= end ||
-                        state->tolower(*ptr) != state->tolower(*p))
+                        state->lower(*ptr) != state->lower(*p))
 						goto failure;
 					p++; ptr++;
 				}
@@ -508,7 +508,7 @@
 		case SRE_OP_LITERAL_IGNORE:
 			TRACE(("%8d: literal lower(%c)\n", PTR(ptr), (SRE_CHAR) *pattern));
 			if (ptr >= end ||
-                state->tolower(*ptr) != state->tolower(*pattern))
+                state->lower(*ptr) != state->lower(*pattern))
 				goto failure;
 			pattern++;
 			ptr++;
@@ -518,7 +518,7 @@
 			TRACE(("%8d: literal not lower(%c)\n", PTR(ptr),
                    (SRE_CHAR) *pattern));
 			if (ptr >= end ||
-                state->tolower(*ptr) == state->tolower(*pattern))
+                state->lower(*ptr) == state->lower(*pattern))
 				goto failure;
 			pattern++;
 			ptr++;
@@ -527,7 +527,7 @@
 		case SRE_OP_IN_IGNORE:
 			TRACE(("%8d: set lower(%c)\n", PTR(ptr), *ptr));
 			if (ptr >= end
-				|| !SRE_MEMBER(pattern+1, (SRE_CHAR) state->tolower(*ptr)))
+				|| !SRE_MEMBER(pattern+1, (SRE_CHAR) state->lower(*ptr)))
 				goto failure;
 			pattern += pattern[0];
 			ptr++;
@@ -611,7 +611,7 @@
 				/* repeated literal */
 				SRE_CHAR chr = (SRE_CHAR) pattern[4];
 				while (count < (int) pattern[2]) {
-					if (ptr >= end || (SRE_CHAR) state->tolower(*ptr) != chr)
+					if (ptr >= end || (SRE_CHAR) state->lower(*ptr) != chr)
 						break;
 					ptr++;
 					count++;
@@ -631,7 +631,7 @@
 				/* repeated non-literal */
 				SRE_CHAR chr = (SRE_CHAR) pattern[4];
 				while (count < (int) pattern[2]) {
-					if (ptr >= end || (SRE_CHAR) state->tolower(*ptr) == chr)
+					if (ptr >= end || (SRE_CHAR) state->lower(*ptr) == chr)
 						break;
 					ptr++;
 					count++;
@@ -1001,18 +1001,18 @@
 }
 
 static PyObject *
-sre_lower(PyObject* self, PyObject* args)
+sre_getlower(PyObject* self, PyObject* args)
 {
     int character, flags;
 	if (!PyArg_ParseTuple(args, "ii", &character, &flags))
         return NULL;
     if (flags & SRE_FLAG_LOCALE)
-        return Py_BuildValue("i", sre_tolower_locale(character));
+        return Py_BuildValue("i", sre_lower_locale(character));
 #if defined(HAVE_UNICODE)
     if (flags & SRE_FLAG_UNICODE)
-        return Py_BuildValue("i", sre_tolower_unicode(character));
+        return Py_BuildValue("i", sre_lower_unicode(character));
 #endif
-    return Py_BuildValue("i", sre_tolower(character));
+    return Py_BuildValue("i", sre_lower(character));
 }
 
 LOCAL(PyObject*)
@@ -1082,13 +1082,13 @@
 	state->stacksize = 0;
 
     if (pattern->flags & SRE_FLAG_LOCALE)
-        state->tolower = sre_tolower_locale;
+        state->lower = sre_lower_locale;
 #if defined(HAVE_UNICODE)
     else if (pattern->flags & SRE_FLAG_UNICODE)
-        state->tolower = sre_tolower_unicode;
+        state->lower = sre_lower_unicode;
 #endif
     else
-        state->tolower = sre_tolower;
+        state->lower = sre_lower;
 
 	return string;
 }
@@ -1876,7 +1876,7 @@
 static PyMethodDef _functions[] = {
 	{"compile", _compile, 1},
 	{"getcodesize", sre_codesize, 1},
-	{"getlower", sre_lower, 1},
+	{"getlower", sre_getlower, 1},
 	{NULL, NULL}
 };
 
diff --git a/Modules/sre.h b/Modules/sre.h
index a5f0aeb..a7786ed 100644
--- a/Modules/sre.h
+++ b/Modules/sre.h
@@ -62,7 +62,7 @@
     int stacksize;
     int stackbase;
     /* hooks */
-    SRE_TOLOWER_HOOK tolower;
+    SRE_TOLOWER_HOOK lower;
 } SRE_STATE;
 
 typedef struct {