diff --git a/Include/Python.h b/Include/Python.h
index d1ffc73..d3fce4b 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -118,6 +118,9 @@
 #include "abstract.h"
 
 #define PyArg_GetInt(v, a)	PyArg_Parse((v), "i", (a))
+
+/* PyArg_NoArgs should not be necessary.
+   Set ml_flags in the PyMethodDef to METH_NOARGS. */
 #define PyArg_NoArgs(v)		PyArg_Parse(v, "")
 
 /* Convert a possibly signed character to a nonnegative int */
diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c
index 5736868..5603fe9 100644
--- a/Modules/_curses_panel.c
+++ b/Modules/_curses_panel.c
@@ -355,14 +355,12 @@
    panel.above() *requires* a panel object in the first place which
    may be undesirable. */
 static PyObject *
-PyCurses_bottom_panel(PyObject *self, PyObject *args)
+PyCurses_bottom_panel(PyObject *self)
 {
     PANEL *pan;
     PyCursesPanelObject *po;
 
     PyCursesInitialised;
-	
-    if (!PyArg_NoArgs(args)) return NULL;
 
     pan = panel_above(NULL);
 
@@ -403,14 +401,12 @@
    *requires* a panel object in the first place which may be
    undesirable. */
 static PyObject *
-PyCurses_top_panel(PyObject *self, PyObject *args)
+PyCurses_top_panel(PyObject *self)
 {
     PANEL *pan;
     PyCursesPanelObject *po;
     
     PyCursesInitialised;
-	
-    if (!PyArg_NoArgs(args)) return NULL;
 
     pan = panel_below(NULL);
 
@@ -429,10 +425,9 @@
     return (PyObject *)po;
 }
 
-static PyObject *PyCurses_update_panels(PyObject *self, PyObject *args)
+static PyObject *PyCurses_update_panels(PyObject *self)
 { 
     PyCursesInitialised;
-    if (!PyArg_NoArgs(args)) return NULL;
     update_panels();
     Py_INCREF(Py_None);
     return Py_None;
@@ -442,10 +437,10 @@
 /* List of functions defined in the module */
 
 static PyMethodDef PyCurses_methods[] = {
-    {"bottom_panel",        (PyCFunction)PyCurses_bottom_panel},
-    {"new_panel",           (PyCFunction)PyCurses_new_panel, METH_VARARGS},
-    {"top_panel",           (PyCFunction)PyCurses_top_panel},
-    {"update_panels",       (PyCFunction)PyCurses_update_panels},
+    {"bottom_panel",        (PyCFunction)PyCurses_bottom_panel,  METH_NOARGS},
+    {"new_panel",           (PyCFunction)PyCurses_new_panel,     METH_VARARGS},
+    {"top_panel",           (PyCFunction)PyCurses_top_panel,     METH_NOARGS},
+    {"update_panels",       (PyCFunction)PyCurses_update_panels, METH_NOARGS},
     {NULL,		NULL}		/* sentinel */
 };
 
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index c617bfb..cfbef9f 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -245,15 +245,12 @@
 ;
 
 static PyObject*
-PyLocale_localeconv(PyObject* self, PyObject* args)
+PyLocale_localeconv(PyObject* self)
 {
     PyObject* result;
     struct lconv *l;
     PyObject *x;
 
-    if (!PyArg_NoArgs(args))
-        return NULL;
-
     result = PyDict_New();
     if (!result)
         return NULL;
@@ -368,14 +365,11 @@
 
 #if defined(MS_WIN32)
 static PyObject*
-PyLocale_getdefaultlocale(PyObject* self, PyObject* args)
+PyLocale_getdefaultlocale(PyObject* self)
 {
     char encoding[100];
     char locale[100];
 
-    if (!PyArg_NoArgs(args))
-        return NULL;
-
     PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP());
 
     if (GetLocaleInfo(LOCALE_USER_DEFAULT,
@@ -408,7 +402,7 @@
 
 #if defined(macintosh)
 static PyObject*
-PyLocale_getdefaultlocale(PyObject* self, PyObject* args)
+PyLocale_getdefaultlocale(PyObject* self)
 {
     return Py_BuildValue("Os", Py_None, PyMac_getscript());
 }
@@ -530,13 +524,13 @@
   {"setlocale", (PyCFunction) PyLocale_setlocale, 
    METH_VARARGS, setlocale__doc__},
   {"localeconv", (PyCFunction) PyLocale_localeconv, 
-   0, localeconv__doc__},
+   METH_NOARGS, localeconv__doc__},
   {"strcoll", (PyCFunction) PyLocale_strcoll, 
    METH_VARARGS, strcoll__doc__},
   {"strxfrm", (PyCFunction) PyLocale_strxfrm, 
    METH_VARARGS, strxfrm__doc__},
 #if defined(MS_WIN32) || defined(macintosh)
-  {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, 0},
+  {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, METH_NOARGS},
 #endif
 #ifdef HAVE_LANGINFO_H
   {"nl_langinfo", (PyCFunction) PyLocale_nl_langinfo,
diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c
index 85dfa83..d767626 100644
--- a/Modules/bsddbmodule.c
+++ b/Modules/bsddbmodule.c
@@ -380,10 +380,8 @@
 };
 
 static PyObject *
-bsddb_close(bsddbobject *dp, PyObject *args)
+bsddb_close(bsddbobject *dp)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	if (dp->di_bsddb != NULL) {
 		int status;
 		BSDDB_BGN_SAVE(dp)
@@ -401,7 +399,7 @@
 }
 
 static PyObject *
-bsddb_keys(bsddbobject *dp, PyObject *args)
+bsddb_keys(bsddbobject *dp)
 {
 	PyObject *list, *item=NULL;
 	DBT krec, drec;
@@ -409,8 +407,6 @@
 	int status;
 	int err;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	check_bsddbobject_open(dp, NULL);
 	list = PyList_New(0);
 	if (list == NULL)
@@ -562,7 +558,7 @@
 }
 
 static PyObject *
-bsddb_seq(bsddbobject *dp, PyObject *args, int sequence_request)
+bsddb_seq(bsddbobject *dp, int sequence_request)
 {
 	int status;
 	DBT krec, drec;
@@ -570,9 +566,6 @@
 	char *ddata=NULL,dbuf[4096];
 	PyObject *result;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	check_bsddbobject_open(dp, NULL);
 	krec.data = 0;
 	krec.size = 0;
@@ -598,11 +591,10 @@
 		if (status < 0)
 			PyErr_SetFromErrno(BsddbError);
 		else
-			PyErr_SetObject(PyExc_KeyError, args);
+			PyErr_SetString(PyExc_KeyError, "no key/data pairs");
 		return NULL;
 	}
 
-	
 	if (dp->di_type == DB_RECNO)
 		result = Py_BuildValue("is#", *((int*)kdata),
 				       ddata, drec.size);
@@ -615,32 +607,30 @@
 }
 
 static PyObject *
-bsddb_next(bsddbobject *dp, PyObject *key)
+bsddb_next(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_NEXT);
+	return bsddb_seq(dp, R_NEXT);
 }
 static PyObject *
-bsddb_previous(bsddbobject *dp, PyObject *key)
+bsddb_previous(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_PREV);
+	return bsddb_seq(dp, R_PREV);
 }
 static PyObject *
-bsddb_first(bsddbobject *dp, PyObject *key)
+bsddb_first(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_FIRST);
+	return bsddb_seq(dp, R_FIRST);
 }
 static PyObject *
-bsddb_last(bsddbobject *dp, PyObject *key)
+bsddb_last(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_LAST);
+	return bsddb_seq(dp, R_LAST);
 }
 static PyObject *
-bsddb_sync(bsddbobject *dp, PyObject *args)
+bsddb_sync(bsddbobject *dp)
 {
 	int status;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	check_bsddbobject_open(dp, NULL);
 	BSDDB_BGN_SAVE(dp)
 	status = (dp->di_bsddb->sync)(dp->di_bsddb, 0);
@@ -652,15 +642,15 @@
 	return PyInt_FromLong(status = 0);
 }
 static PyMethodDef bsddb_methods[] = {
-	{"close",		(PyCFunction)bsddb_close, METH_OLDARGS},
-	{"keys",		(PyCFunction)bsddb_keys, METH_OLDARGS},
+	{"close",		(PyCFunction)bsddb_close, METH_NOARGS},
+	{"keys",		(PyCFunction)bsddb_keys, METH_NOARGS},
 	{"has_key",		(PyCFunction)bsddb_has_key, METH_OLDARGS},
 	{"set_location",	(PyCFunction)bsddb_set_location, METH_OLDARGS},
-	{"next",		(PyCFunction)bsddb_next, METH_OLDARGS},
-	{"previous",	(PyCFunction)bsddb_previous, METH_OLDARGS},
-	{"first",		(PyCFunction)bsddb_first, METH_OLDARGS},
-	{"last",		(PyCFunction)bsddb_last, METH_OLDARGS},
-	{"sync",		(PyCFunction)bsddb_sync, METH_OLDARGS},
+	{"next",		(PyCFunction)bsddb_next, METH_NOARGS},
+	{"previous",	(PyCFunction)bsddb_previous, METH_NOARGS},
+	{"first",		(PyCFunction)bsddb_first, METH_NOARGS},
+	{"last",		(PyCFunction)bsddb_last, METH_NOARGS},
+	{"sync",		(PyCFunction)bsddb_sync, METH_NOARGS},
 	{NULL,	       	NULL}		/* sentinel */
 };
 
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 3ddacf5..fb904f4 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -70,14 +70,11 @@
 
 
 static PyObject *
-md5_digest(md5object *self, PyObject *args)
+md5_digest(md5object *self)
 {
  	MD5_CTX mdContext;
 	unsigned char aDigest[16];
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	/* make a temporary copy, and perform the final */
 	mdContext = self->md5;
 	MD5Final(aDigest, &mdContext);
@@ -94,16 +91,13 @@
 
 
 static PyObject *
-md5_hexdigest(md5object *self, PyObject *args)
+md5_hexdigest(md5object *self)
 {
  	MD5_CTX mdContext;
 	unsigned char digest[16];
 	unsigned char hexdigest[32];
 	int i, j;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	/* make a temporary copy, and perform the final */
 	mdContext = self->md5;
 	MD5Final(digest, &mdContext);
@@ -129,13 +123,10 @@
 
 
 static PyObject *
-md5_copy(md5object *self, PyObject *args)
+md5_copy(md5object *self)
 {
 	md5object *md5p;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	if ((md5p = newmd5object()) == NULL)
 		return NULL;
 
@@ -152,9 +143,9 @@
 
 static PyMethodDef md5_methods[] = {
 	{"update",    (PyCFunction)md5_update,    METH_OLDARGS, update_doc},
-	{"digest",    (PyCFunction)md5_digest,    METH_OLDARGS, digest_doc},
-	{"hexdigest", (PyCFunction)md5_hexdigest, METH_OLDARGS, hexdigest_doc},
-	{"copy",      (PyCFunction)md5_copy,      METH_OLDARGS, copy_doc},
+	{"digest",    (PyCFunction)md5_digest,    METH_NOARGS,  digest_doc},
+	{"hexdigest", (PyCFunction)md5_hexdigest, METH_NOARGS,  hexdigest_doc},
+	{"copy",      (PyCFunction)md5_copy,      METH_NOARGS,  copy_doc},
 	{NULL, NULL}			     /* sentinel */
 };
 
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 91989b7..a52d45f 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -120,12 +120,10 @@
 See pwd.__doc__ for more on password database entries.";
 
 static PyObject *
-pwd_getpwall(PyObject *self, PyObject *args)
+pwd_getpwall(PyObject *self)
 {
 	PyObject *d;
 	struct passwd *p;
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	if ((d = PyList_New(0)) == NULL)
 		return NULL;
 #if defined(PYOS_OS2) && defined(PYCC_GCC)
@@ -151,7 +149,7 @@
 	{"getpwuid",	pwd_getpwuid, METH_OLDARGS, pwd_getpwuid__doc__},
 	{"getpwnam",	pwd_getpwnam, METH_OLDARGS, pwd_getpwnam__doc__},
 #ifdef HAVE_GETPWENT
-	{"getpwall",	pwd_getpwall, METH_OLDARGS, pwd_getpwall__doc__},
+	{"getpwall",	pwd_getpwall, METH_NOARGS,  pwd_getpwall__doc__},
 #endif
 	{NULL,		NULL}		/* sentinel */
 };
diff --git a/Modules/readline.c b/Modules/readline.c
index e573773..ed78b92 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -237,11 +237,8 @@
 
 /* get the beginning index for the scope of the tab-completion */
 static PyObject *
-get_begidx(PyObject *self, PyObject *args)
+get_begidx(PyObject *self)
 {
-	if(!PyArg_NoArgs(args)) {
-		return NULL;
-	} 
 	Py_INCREF(begidx);
 	return begidx;
 }
@@ -252,11 +249,8 @@
 
 /* get the ending index for the scope of the tab-completion */
 static PyObject *
-get_endidx(PyObject *self, PyObject *args)
+get_endidx(PyObject *self)
 {
- 	if(!PyArg_NoArgs(args)) {
-		return NULL;
-	} 
 	Py_INCREF(endidx);
 	return endidx;
 }
@@ -307,11 +301,8 @@
 /* get the tab-completion word-delimiters that readline uses */
 
 static PyObject *
-get_completer_delims(PyObject *self, PyObject *args)
+get_completer_delims(PyObject *self)
 {
-	if(!PyArg_NoArgs(args)) {
-		return NULL;
-	}
 	return PyString_FromString(rl_completer_word_break_characters);
 }
 	
@@ -359,12 +350,10 @@
 /* Exported function to get current length of history */
 
 static PyObject *
-get_current_history_length(PyObject *self, PyObject *args)
+get_current_history_length(PyObject *self)
 {
 	HISTORY_STATE *hist_st;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	hist_st = history_get_history_state();
 	return PyInt_FromLong(hist_st ? (long) hist_st->length : (long) 0);
 }
@@ -377,10 +366,8 @@
 /* Exported function to read the current line buffer */
 
 static PyObject *
-get_line_buffer(PyObject *self, PyObject *args)
+get_line_buffer(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	return PyString_FromString(rl_line_buffer);
 }
 
@@ -427,7 +414,7 @@
 {
 	{"parse_and_bind", parse_and_bind, METH_VARARGS, doc_parse_and_bind},
 	{"get_line_buffer", get_line_buffer, 
-	 METH_OLDARGS, doc_get_line_buffer},
+	 METH_NOARGS, doc_get_line_buffer},
 	{"insert_text", insert_text, METH_VARARGS, doc_insert_text},
 	{"redisplay", (PyCFunction)redisplay, METH_NOARGS, doc_redisplay},
 	{"read_init_file", read_init_file, METH_VARARGS, doc_read_init_file},
@@ -438,20 +425,20 @@
 	{"get_history_item", get_history_item,
 	 METH_VARARGS, doc_get_history_item},
 	{"get_current_history_length", get_current_history_length,
-	 METH_OLDARGS, doc_get_current_history_length},
+	 METH_NOARGS, doc_get_current_history_length},
  	{"set_history_length", set_history_length, 
 	 METH_VARARGS, set_history_length_doc},
  	{"get_history_length", get_history_length, 
 	 METH_VARARGS, get_history_length_doc},
 	{"set_completer", set_completer, METH_VARARGS, doc_set_completer},
-	{"get_begidx", get_begidx, METH_OLDARGS, doc_get_begidx},
-	{"get_endidx", get_endidx, METH_OLDARGS, doc_get_endidx},
+	{"get_begidx", get_begidx, METH_NOARGS, doc_get_begidx},
+	{"get_endidx", get_endidx, METH_NOARGS, doc_get_endidx},
 
 	{"set_completer_delims", set_completer_delims, 
 	 METH_VARARGS, doc_set_completer_delims},
 	{"add_history", py_add_history, METH_VARARGS, doc_add_history},
 	{"get_completer_delims", get_completer_delims, 
-	 METH_OLDARGS, doc_get_completer_delims},
+	 METH_NOARGS, doc_get_completer_delims},
 	
 	{"set_startup_hook", set_startup_hook, METH_VARARGS, doc_set_startup_hook},
 #ifdef HAVE_RL_PRE_INPUT_HOOK
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index b27c4b7..e4298c6 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -163,11 +163,8 @@
 
 #ifdef HAVE_PAUSE
 static PyObject *
-signal_pause(PyObject *self, PyObject *args)
+signal_pause(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	Py_BEGIN_ALLOW_THREADS
 	(void)pause();
 	Py_END_ALLOW_THREADS
@@ -282,7 +279,7 @@
 	{"signal",	        signal_signal, METH_OLDARGS, signal_doc},
 	{"getsignal",	        signal_getsignal, METH_OLDARGS, getsignal_doc},
 #ifdef HAVE_PAUSE
-	{"pause",	        signal_pause, METH_OLDARGS, pause_doc},
+	{"pause",	        signal_pause, METH_NOARGS, pause_doc},
 #endif
 	{"default_int_handler", signal_default_int_handler, 
 	 METH_OLDARGS, default_int_handler_doc},
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c
index dfc5cbe..cf4d3d5 100644
--- a/Modules/threadmodule.c
+++ b/Modules/threadmodule.c
@@ -87,11 +87,8 @@
 The blocking operation is not interruptible.";
 
 static PyObject *
-lock_PyThread_release_lock(lockobject *self, PyObject *args)
+lock_PyThread_release_lock(lockobject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	/* Sanity check: the lock must be locked */
 	if (PyThread_acquire_lock(self->lock_lock, 0)) {
 		PyThread_release_lock(self->lock_lock);
@@ -113,11 +110,8 @@
 but it needn't be locked by the same thread that unlocks it.";
 
 static PyObject *
-lock_locked_lock(lockobject *self, PyObject *args)
+lock_locked_lock(lockobject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	if (PyThread_acquire_lock(self->lock_lock, 0)) {
 		PyThread_release_lock(self->lock_lock);
 		return PyInt_FromLong(0L);
@@ -137,11 +131,11 @@
 	{"acquire",      (PyCFunction)lock_PyThread_acquire_lock, 
 	 METH_OLDARGS, acquire_doc},
 	{"release_lock", (PyCFunction)lock_PyThread_release_lock, 
-	 METH_OLDARGS, release_doc},
+	 METH_NOARGS, release_doc},
 	{"release",      (PyCFunction)lock_PyThread_release_lock, 
 	 METH_OLDARGS, release_doc},
 	{"locked_lock",  (PyCFunction)lock_locked_lock,  
-	 METH_OLDARGS, locked_doc},
+	 METH_NOARGS, locked_doc},
 	{"locked",       (PyCFunction)lock_locked_lock,  
 	 METH_OLDARGS, locked_doc},
 	{NULL,           NULL}		/* sentinel */
@@ -267,10 +261,8 @@
 printed unless the exception is SystemExit.\n";
 
 static PyObject *
-thread_PyThread_exit_thread(PyObject *self, PyObject *args)
+thread_PyThread_exit_thread(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	PyErr_SetNone(PyExc_SystemExit);
 	return NULL;
 }
@@ -295,10 +287,8 @@
 #endif
 
 static PyObject *
-thread_PyThread_allocate_lock(PyObject *self, PyObject *args)
+thread_PyThread_allocate_lock(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	return (PyObject *) newlockobject();
 }
 
@@ -309,11 +299,9 @@
 Create a new lock object.  See LockType.__doc__ for information about locks.";
 
 static PyObject *
-thread_get_ident(PyObject *self, PyObject *args)
+thread_get_ident(PyObject *self)
 {
 	long ident;
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	ident = PyThread_get_thread_ident();
 	if (ident == -1) {
 		PyErr_SetString(ThreadError, "no current thread ident");
@@ -341,15 +329,15 @@
 	                        METH_VARARGS,
 				start_new_doc},
 	{"allocate_lock",	(PyCFunction)thread_PyThread_allocate_lock, 
-	 METH_OLDARGS, allocate_doc},
+	 METH_NOARGS, allocate_doc},
 	{"allocate",		(PyCFunction)thread_PyThread_allocate_lock, 
 	 METH_OLDARGS, allocate_doc},
 	{"exit_thread",		(PyCFunction)thread_PyThread_exit_thread, 
-	 METH_OLDARGS, exit_doc},
+	 METH_NOARGS, exit_doc},
 	{"exit",		(PyCFunction)thread_PyThread_exit_thread, 
 	 METH_OLDARGS, exit_doc},
 	{"get_ident",		(PyCFunction)thread_get_ident, 
-	 METH_OLDARGS, get_ident_doc},
+	 METH_NOARGS, get_ident_doc},
 #ifndef NO_EXIT_PROG
 	{"exit_prog",		(PyCFunction)thread_PyThread_exit_prog},
 #endif
