diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c
index 64fc046..f8d412a 100644
--- a/Modules/_bisectmodule.c
+++ b/Modules/_bisectmodule.c
@@ -40,7 +40,7 @@
 	int lo = 0;
 	int hi = -1;
 	int index;
-	static const char *keywords[] = {"a", "x", "lo", "hi", NULL};
+	static char *keywords[] = {"a", "x", "lo", "hi", NULL};
 
 	if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:bisect_right",
 		keywords, &list, &item, &lo, &hi))
@@ -70,7 +70,7 @@
 	int lo = 0;
 	int hi = -1;
 	int index;
-	static const char *keywords[] = {"a", "x", "lo", "hi", NULL};
+	static char *keywords[] = {"a", "x", "lo", "hi", NULL};
 
 	if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:insort_right",
 		keywords, &list, &item, &lo, &hi))
@@ -137,7 +137,7 @@
 	int lo = 0;
 	int hi = -1;
 	int index;
-	static const char *keywords[] = {"a", "x", "lo", "hi", NULL};
+	static char *keywords[] = {"a", "x", "lo", "hi", NULL};
 
 	if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:bisect_left",
 		keywords, &list, &item, &lo, &hi))
@@ -167,7 +167,7 @@
 	int lo = 0;
 	int hi = -1;
 	int index;
-	static const char *keywords[] = {"a", "x", "lo", "hi", NULL};
+	static char *keywords[] = {"a", "x", "lo", "hi", NULL};
 
 	if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:insort_left",
 		keywords, &list, &item, &lo, &hi))
diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c
index 9bcb334..647b143 100644
--- a/Modules/_bsddb.c
+++ b/Modules/_bsddb.c
@@ -651,7 +651,7 @@
     int dlen = -1;
     int doff = -1;
     int flags = 0;
-    static const char* kwnames[] = { "flags", "dlen", "doff", NULL };
+    static char* kwnames[] = { "flags", "dlen", "doff", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, format, kwnames,
 				     &flags, &dlen, &doff)) 
@@ -1150,10 +1150,10 @@
 #if (DBVER >= 41)
     PyObject *txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = {"secondaryDB", "callback", "flags", "txn",
+    static char* kwnames[] = {"secondaryDB", "callback", "flags", "txn",
                                     NULL};
 #else
-    static const char* kwnames[] = {"secondaryDB", "callback", "flags", NULL};
+    static char* kwnames[] = {"secondaryDB", "callback", "flags", NULL};
 #endif
 
 #if (DBVER >= 41)
@@ -1259,7 +1259,7 @@
     PyObject* retval = NULL;
     DBT key, data;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "txn", "flags", NULL };
+    static char* kwnames[] = { "txn", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|Oi:consume", kwnames,
                                      &txnobj, &flags))
@@ -1329,7 +1329,7 @@
     DBC* dbc;
     PyObject* txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "txn", "flags", NULL };
+    static char* kwnames[] = { "txn", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|Oi:cursor", kwnames,
                                      &txnobj, &flags))
@@ -1354,7 +1354,7 @@
     PyObject* keyobj;
     DBT key;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "key", "txn", "flags", NULL };
+    static char* kwnames[] = { "key", "txn", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|Oi:delete", kwnames,
                                      &keyobj, &txnobj, &flags))
@@ -1406,7 +1406,7 @@
     int doff = -1;
     DBT key, data;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = {"key", "default", "txn", "flags", "dlen",
+    static char* kwnames[] = {"key", "default", "txn", "flags", "dlen",
                                     "doff", NULL};
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OOiii:get", kwnames,
@@ -1474,7 +1474,7 @@
     int doff = -1;
     DBT key, pkey, data;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = {"key", "default", "txn", "flags", "dlen",
+    static char* kwnames[] = {"key", "default", "txn", "flags", "dlen",
                                     "doff", NULL};
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OOiii:pget", kwnames,
@@ -1572,7 +1572,7 @@
     PyObject* retval = NULL;
     DBT key, data;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "key", "txn", NULL };
+    static char* kwnames[] = { "key", "txn", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:get_size", kwnames,
                                      &keyobj, &txnobj))
@@ -1615,7 +1615,7 @@
     PyObject* retval = NULL;
     DBT key, data;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "key", "data", "txn", "flags", NULL };
+    static char* kwnames[] = { "key", "data", "txn", "flags", NULL };
 
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|Oi:get_both", kwnames,
@@ -1766,7 +1766,7 @@
     DBT key;
     DB_TXN *txn = NULL;
     DB_KEY_RANGE range;
-    static const char* kwnames[] = { "key", "txn", "flags", NULL };
+    static char* kwnames[] = { "key", "txn", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|Oi:key_range", kwnames,
                                      &keyobj, &txnobj, &flags))
@@ -1797,17 +1797,17 @@
     PyObject *txnobj = NULL;
     DB_TXN *txn = NULL;
     /* with dbname */
-    static const char* kwnames[] = {
+    static char* kwnames[] = {
         "filename", "dbname", "dbtype", "flags", "mode", "txn", NULL};
     /* without dbname */
     static const char* kwnames_basic[] = {
         "filename", "dbtype", "flags", "mode", "txn", NULL};
 #else
     /* with dbname */
-    static const char* kwnames[] = {
+    static char* kwnames[] = {
         "filename", "dbname", "dbtype", "flags", "mode", NULL};
     /* without dbname */
-    static const char* kwnames_basic[] = {
+    static char* kwnames_basic[] = {
         "filename", "dbtype", "flags", "mode", NULL};
 #endif
 
@@ -1891,7 +1891,7 @@
     PyObject* keyobj, *dataobj, *retval;
     DBT key, data;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "key", "data", "txn", "flags", "dlen",
+    static char* kwnames[] = { "key", "data", "txn", "flags", "dlen",
                                      "doff", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|Oiii:put", kwnames,
@@ -1932,7 +1932,7 @@
     char* filename;
     char* database = NULL;
     int err, flags=0;
-    static const char* kwnames[] = { "filename", "dbname", "flags", NULL};
+    static char* kwnames[] = { "filename", "dbname", "flags", NULL};
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|zi:remove", kwnames,
                                      &filename, &database, &flags))
@@ -2350,9 +2350,9 @@
 #if (DBVER >= 43)
     PyObject* txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "txn", "flags", NULL };
+    static char* kwnames[] = { "txn", "flags", NULL };
 #else
-    static const char* kwnames[] = { "flags", NULL };
+    static char* kwnames[] = { "flags", NULL };
 #endif
 
 #if (DBVER >= 43)
@@ -2492,7 +2492,7 @@
     u_int32_t count=0;
     PyObject* txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "txn", "flags", NULL };
+    static char* kwnames[] = { "txn", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|Oi:cursor", kwnames,
                                      &txnobj, &flags))
@@ -2536,7 +2536,7 @@
     char* dbName=NULL;
     char* outFileName=NULL;
     FILE* outFile=NULL;
-    static const char* kwnames[] = { "filename", "dbname", "outfile", "flags",
+    static char* kwnames[] = { "filename", "dbname", "outfile", "flags",
                                      NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|zzi:verify", kwnames,
@@ -2594,7 +2594,7 @@
     int err;
     u_int32_t flags=0;
     char *passwd = NULL;
-    static const char* kwnames[] = { "passwd", "flags", NULL };
+    static char* kwnames[] = { "passwd", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i:set_encrypt", kwnames,
 		&passwd, &flags)) {
@@ -3034,7 +3034,7 @@
     int dlen = -1;
     int doff = -1;
     DBT key, data;
-    static const char* kwnames[] = { "key","data", "flags", "dlen", "doff",
+    static char* kwnames[] = { "key","data", "flags", "dlen", "doff",
                                      NULL };
 
     CLEAR_DBT(key);
@@ -3121,7 +3121,7 @@
     int dlen = -1;
     int doff = -1;
     DBT key, pkey, data;
-    static const char* kwnames[] = { "key","data", "flags", "dlen", "doff",
+    static char* kwnames[] = { "key","data", "flags", "dlen", "doff",
                                      NULL };
 
     CLEAR_DBT(key);
@@ -3283,7 +3283,7 @@
     int err, flags = 0;
     PyObject* keyobj, *dataobj;
     DBT key, data;
-    static const char* kwnames[] = { "key", "data", "flags", "dlen", "doff",
+    static char* kwnames[] = { "key", "data", "flags", "dlen", "doff",
                                      NULL };
     int dlen = -1;
     int doff = -1;
@@ -3319,7 +3319,7 @@
     int err, flags = 0;
     DBT key, data;
     PyObject* retval, *keyobj;
-    static const char* kwnames[] = { "key", "flags", "dlen", "doff", NULL };
+    static char* kwnames[] = { "key", "flags", "dlen", "doff", NULL };
     int dlen = -1;
     int doff = -1;
 
@@ -3389,7 +3389,7 @@
     int err, flags = 0;
     DBT key, data;
     PyObject* retval, *keyobj;
-    static const char* kwnames[] = { "key", "flags", "dlen", "doff", NULL };
+    static char* kwnames[] = { "key", "flags", "dlen", "doff", NULL };
     int dlen = -1;
     int doff = -1;
 
@@ -3579,7 +3579,7 @@
     PyObject* retval;
     int dlen = -1;
     int doff = -1;
-    static const char* kwnames[] = { "recno","flags", "dlen", "doff", NULL };
+    static char* kwnames[] = { "recno","flags", "dlen", "doff", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|iii:set_recno", kwnames,
 				     &irecno, &flags, &dlen, &doff))
@@ -3773,7 +3773,7 @@
     char *database = NULL;
     PyObject *txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "file", "database", "txn", "flags",
+    static char* kwnames[] = { "file", "database", "txn", "flags",
                                      NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss|Oi:dbremove", kwnames,
@@ -3801,7 +3801,7 @@
     char *newname = NULL;
     PyObject *txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "file", "database", "newname", "txn",
+    static char* kwnames[] = { "file", "database", "newname", "txn",
                                      "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sss|Oi:dbrename", kwnames,
@@ -3826,7 +3826,7 @@
     int err;
     u_int32_t flags=0;
     char *passwd = NULL;
-    static const char* kwnames[] = { "passwd", "flags", NULL };
+    static char* kwnames[] = { "passwd", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i:set_encrypt", kwnames,
 		&passwd, &flags)) {
@@ -3849,7 +3849,7 @@
     int err;
     u_int32_t flags=0;
     u_int32_t timeout = 0;
-    static const char* kwnames[] = { "timeout", "flags", NULL };
+    static char* kwnames[] = { "timeout", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:set_timeout", kwnames,
 		&timeout, &flags)) {
@@ -4136,7 +4136,7 @@
     int flags = 0;
     PyObject* txnobj = NULL;
     DB_TXN *txn = NULL;
-    static const char* kwnames[] = { "parent", "flags", NULL };
+    static char* kwnames[] = { "parent", "flags", NULL };
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|Oi:txn_begin", kwnames,
                                      &txnobj, &flags))
@@ -4986,7 +4986,7 @@
 {
     PyObject* dbenvobj = NULL;
     int flags = 0;
-    static const char* kwnames[] = { "dbEnv", "flags", NULL};
+    static char* kwnames[] = { "dbEnv", "flags", NULL};
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|Oi:DB", kwnames,
                                      &dbenvobj, &flags))
diff --git a/Modules/_csv.c b/Modules/_csv.c
index 51dc89d..da5ae0d 100644
--- a/Modules/_csv.c
+++ b/Modules/_csv.c
@@ -291,7 +291,7 @@
         self->ob_type->tp_free((PyObject *)self);
 }
 
-static const char *dialect_kws[] = {
+static char *dialect_kws[] = {
 	"dialect",
 	"delimiter",
 	"doublequote",
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index ab3ef23..514ed72 100644
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -106,12 +106,6 @@
 #endif
 #endif
 
-#if (PY_VERSION_HEX >= 0x02050000)
-#define PY_CONST const /* 2.5 adds const to some API:s */
-#else
-#define PY_CONST
-#endif
-
 #if !defined(Py_RETURN_NONE)
 #define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
 #endif
@@ -2192,7 +2186,7 @@
 
     PyObject* target = NULL;
     char* encoding = NULL;
-    static PY_CONST char* kwlist[] = { "target", "encoding", NULL };
+    static char* kwlist[] = { "target", "encoding", NULL };
     if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oz:XMLParser", kwlist,
                                      &target, &encoding))
         return NULL;
diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c
index c13de8f..00d86c9 100644
--- a/Modules/cjkcodecs/multibytecodec.c
+++ b/Modules/cjkcodecs/multibytecodec.c
@@ -45,8 +45,8 @@
 PyDoc_STRVAR(MultibyteCodec_StreamWriter__doc__,
 "I.StreamWriter(stream[, errors]) -> StreamWriter instance");
 
-static const char *codeckwarglist[] = {"input", "errors", NULL};
-static const char *streamkwarglist[] = {"stream", "errors", NULL};
+static char *codeckwarglist[] = {"input", "errors", NULL};
+static char *streamkwarglist[] = {"stream", "errors", NULL};
 
 static PyObject *multibytecodec_encode(MultibyteCodec *,
 		MultibyteCodec_State *, const Py_UNICODE **, size_t,
diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c
index cb7b588..199ee65 100644
--- a/Modules/datetimemodule.c
+++ b/Modules/datetimemodule.c
@@ -1891,7 +1891,7 @@
 	PyObject *y = NULL;	/* temp sum of microseconds */
 	double leftover_us = 0.0;
 
-	static const char *keywords[] = {
+	static char *keywords[] = {
 		"days", "seconds", "microseconds", "milliseconds",
 		"minutes", "hours", "weeks", NULL
 	};
@@ -2194,7 +2194,7 @@
 
 /* Constructors. */
 
-static const char *date_kws[] = {"year", "month", "day", NULL};
+static char *date_kws[] = {"year", "month", "day", NULL};
 
 static PyObject *
 date_new(PyTypeObject *type, PyObject *args, PyObject *kw)
@@ -2448,7 +2448,7 @@
 	PyObject *result;
 	PyObject *format;
 	PyObject *tuple;
-	static const char *keywords[] = {"format", NULL};
+	static char *keywords[] = {"format", NULL};
 
 	if (! PyArg_ParseTupleAndKeywords(args, kw, "O!:strftime", keywords,
 					  &PyString_Type, &format))
@@ -3028,7 +3028,7 @@
  * Constructors.
  */
 
-static const char *time_kws[] = {"hour", "minute", "second", "microsecond",
+static char *time_kws[] = {"hour", "minute", "second", "microsecond",
 			   "tzinfo", NULL};
 
 static PyObject *
@@ -3196,7 +3196,7 @@
 	PyObject *result;
 	PyObject *format;
 	PyObject *tuple;
-	static const char *keywords[] = {"format", NULL};
+	static char *keywords[] = {"format", NULL};
 
 	if (! PyArg_ParseTupleAndKeywords(args, kw, "O!:strftime", keywords,
 					  &PyString_Type, &format))
@@ -3548,7 +3548,7 @@
  * Constructors.
  */
 
-static const char *datetime_kws[] = {
+static char *datetime_kws[] = {
 	"year", "month", "day", "hour", "minute", "second",
 	"microsecond", "tzinfo", NULL
 };
@@ -3729,7 +3729,7 @@
 {
 	PyObject *self;
 	PyObject *tzinfo = Py_None;
-	static const char *keywords[] = {"tz", NULL};
+	static char *keywords[] = {"tz", NULL};
 
 	if (! PyArg_ParseTupleAndKeywords(args, kw, "|O:now", keywords,
 					  &tzinfo))
@@ -3765,7 +3765,7 @@
 	PyObject *self;
 	double timestamp;
 	PyObject *tzinfo = Py_None;
-	static const char *keywords[] = {"timestamp", "tz", NULL};
+	static char *keywords[] = {"timestamp", "tz", NULL};
 
 	if (! PyArg_ParseTupleAndKeywords(args, kw, "d|O:fromtimestamp",
 					  keywords, &timestamp, &tzinfo))
@@ -3843,7 +3843,7 @@
 static PyObject *
 datetime_combine(PyObject *cls, PyObject *args, PyObject *kw)
 {
- 	static const char *keywords[] = {"date", "time", NULL};
+ 	static char *keywords[] = {"date", "time", NULL};
 	PyObject *date;
 	PyObject *time;
 	PyObject *result = NULL;
@@ -4070,7 +4070,7 @@
 datetime_isoformat(PyDateTime_DateTime *self, PyObject *args, PyObject *kw)
 {
 	char sep = 'T';
-	static const char *keywords[] = {"sep", NULL};
+	static char *keywords[] = {"sep", NULL};
 	char buffer[100];
 	char *cp;
 	PyObject *result;
@@ -4261,7 +4261,7 @@
 	int offset, none;
 
 	PyObject *tzinfo;
-	static const char *keywords[] = {"tz", NULL};
+	static char *keywords[] = {"tz", NULL};
 
 	if (! PyArg_ParseTupleAndKeywords(args, kw, "O!:astimezone", keywords,
 					  &PyDateTime_TZInfoType, &tzinfo))
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c
index a877749..49d241f 100644
--- a/Modules/itertoolsmodule.c
+++ b/Modules/itertoolsmodule.c
@@ -26,7 +26,7 @@
 static PyObject *
 groupby_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 {
-	static const char *kwargs[] = {"iterable", "key", NULL};
+	static char *kwargs[] = {"iterable", "key", NULL};
 	groupbyobject *gbo;
  	PyObject *it, *keyfunc = Py_None;
  
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index 66ce716..7c3c3e4 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -874,7 +874,7 @@
 	int fd, flags = MAP_SHARED, prot = PROT_WRITE | PROT_READ;
 	int devzero = -1;
 	int access = (int)ACCESS_DEFAULT;
-	static const char *keywords[] = {"fileno", "length",
+	static char *keywords[] = {"fileno", "length",
                                          "flags", "prot",
                                          "access", NULL};
 
@@ -992,7 +992,7 @@
 	HANDLE fh = 0;
 	int access = (access_mode)ACCESS_DEFAULT;
 	DWORD flProtect, dwDesiredAccess;
-	static const char *keywords[] = { "fileno", "length",
+	static char *keywords[] = { "fileno", "length",
                                           "tagname",
                                           "access", NULL };
 
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 6ec15fd..c526d75 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -2566,7 +2566,7 @@
 	PySocketSockObject *s = (PySocketSockObject *)self;
 	SOCKET_T fd;
 	int family = AF_INET, type = SOCK_STREAM, proto = 0;
-	static const char *keywords[] = {"family", "type", "proto", 0};
+	static char *keywords[] = {"family", "type", "proto", 0};
 
 	if (!PyArg_ParseTupleAndKeywords(args, kwds,
 					 "|iii:socket", keywords,
