Remove METH_OLDARGS:
  Convert METH_OLDARGS -> METH_VARARGS: also PyArg_Parse -> PyArg_ParseTuple
  Convert METH_OLDARGS -> METH_NOARGS: remove args parameter
Please review.  All tests pass, but some modules don't have tests.
I spot checked various functions to try to make sure nothing broke.
diff --git a/Modules/cryptmodule.c b/Modules/cryptmodule.c
index 1e66039..b1c8f5e 100644
--- a/Modules/cryptmodule.c
+++ b/Modules/cryptmodule.c
@@ -14,7 +14,7 @@
 	char *word, *salt; 
 	extern char * crypt(const char *, const char *);
 
-	if (!PyArg_Parse(args, "(ss)", &word, &salt)) {
+	if (!PyArg_ParseTuple(args, "ss:crypt", &word, &salt)) {
 		return NULL;
 	}
 	return PyString_FromString( crypt( word, salt ) );
@@ -31,7 +31,7 @@
 
 
 static PyMethodDef crypt_methods[] = {
-	{"crypt",	crypt_crypt, METH_OLDARGS, crypt_crypt__doc__},
+	{"crypt",	crypt_crypt, METH_VARARGS, crypt_crypt__doc__},
 	{NULL,		NULL}		/* sentinel */
 };
 
diff --git a/Modules/md5module.c b/Modules/md5module.c
index fb904f4..a6068ff 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -52,7 +52,7 @@
 	unsigned char *cp;
 	int len;
 
-	if (!PyArg_Parse(args, "s#", &cp, &len))
+	if (!PyArg_ParseTuple(args, "s#:update", &cp, &len))
 		return NULL;
 
 	MD5Update(&self->md5, cp, len);
@@ -142,7 +142,7 @@
 
 
 static PyMethodDef md5_methods[] = {
-	{"update",    (PyCFunction)md5_update,    METH_OLDARGS, update_doc},
+	{"update",    (PyCFunction)md5_update,    METH_VARARGS, update_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},
diff --git a/Modules/mpzmodule.c b/Modules/mpzmodule.c
index e2d34b6..84685ed 100644
--- a/Modules/mpzmodule.c
+++ b/Modules/mpzmodule.c
@@ -1242,23 +1242,12 @@
 } /* MPZ_divm() */
 
 
-/* MPZ methods-as-attributes */
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-static PyObject *
-mpz_int(mpzobject *self, PyObject *args)
-#else /* def MPZ_CONVERSIONS_AS_METHODS */
 static PyObject *
 mpz_int(mpzobject *self)
-#endif /* def MPZ_CONVERSIONS_AS_METHODS else */
 {
 	long sli;
 
 
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-	if (!PyArg_NoArgs(args))
-		return NULL;
-#endif /* def MPZ_CONVERSIONS_AS_METHODS */
-
 	if (mpz_size(&self->mpz) > 1
 	    || (sli = (long)mpz_get_ui(&self->mpz)) < (long)0 ) {
 		PyErr_SetString(PyExc_ValueError,
@@ -1273,11 +1262,7 @@
 } /* mpz_int() */
 	
 static PyObject *
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-mpz_long(mpzobject *self, PyObject *args)
-#else /* def MPZ_CONVERSIONS_AS_METHODS */
 mpz_long(mpzobject *self)
-#endif /* def MPZ_CONVERSIONS_AS_METHODS else */
 {
 	int i, isnegative;
 	unsigned long int uli;
@@ -1287,11 +1272,6 @@
 	MP_INT mpzscratch;
 
 
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-	if (!PyArg_NoArgs(args))
-		return NULL;
-#endif /* def MPZ_CONVERSIONS_AS_METHODS */
-
 	/* determine length of python-long to be allocated */
 	if ((longobjp = _PyLong_New(i = (int)
 			    ((mpz_size(&self->mpz) * BITS_PER_MP_LIMB
@@ -1352,13 +1332,8 @@
 /* I would have avoided pow() anyways, so ... */
 static const double multiplier = 256.0 * 256.0 * 256.0 * 256.0;
 
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-static PyObject *
-mpz_float(mpzobject *self, PyObject *args)
-#else /* def MPZ_CONVERSIONS_AS_METHODS */
 static PyObject *
 mpz_float(mpzobject *self)
-#endif /* def MPZ_CONVERSIONS_AS_METHODS else */
 {
 	int i, isnegative;
 	double x;
@@ -1366,11 +1341,6 @@
 	MP_INT mpzscratch;
 
 
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-	if (!PyArg_NoArgs(args))
-		return NULL;
-#endif /* def MPZ_CONVERSIONS_AS_METHODS */
-
 	i = (int)mpz_size(&self->mpz);
 
 	/* determine sign, and copy abs(self) to scratch var */
@@ -1406,40 +1376,20 @@
 
 } /* mpz_float() */
 
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-static PyObject *
-mpz_hex(mpzobject *self, PyObject *args)
-#else /* def MPZ_CONVERSIONS_AS_METHODS */
 static PyObject *
 mpz_hex(mpzobject *self)
-#endif /* def MPZ_CONVERSIONS_AS_METHODS else */
 {
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-	if (!PyArg_NoArgs(args))
-		return NULL;
-#endif /* def MPZ_CONVERSIONS_AS_METHODS */
-
 	return mpz_format((PyObject *)self, 16, (unsigned char)1);
 } /* mpz_hex() */
 
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-static PyObject *
-mpz_oct(mpzobject *self, PyObject *args)
-#else /* def MPZ_CONVERSIONS_AS_METHODS */
 static PyObject *
 mpz_oct(mpzobject *self)
-#endif /* def MPZ_CONVERSIONS_AS_METHODS else */
 {
-#ifdef MPZ_CONVERSIONS_AS_METHODS
-	if (!PyArg_NoArgs(args))
-		return NULL;
-#endif /* def MPZ_CONVERSIONS_AS_METHODS */
-	
 	return mpz_format((PyObject *)self, 8, (unsigned char)1);
 } /* mpz_oct() */
 
 static PyObject *
-mpz_binary(mpzobject *self, PyObject *args)
+mpz_binary(mpzobject *self)
 {
 	int size;
 	PyStringObject *strobjp;
@@ -1447,9 +1397,6 @@
 	MP_INT mp;
 	unsigned long ldigit;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	if (mpz_cmp_ui(&self->mpz, (unsigned long int)0) < 0) {
 		PyErr_SetString(PyExc_ValueError,
 				"mpz.binary() arg must be >= 0");
@@ -1493,13 +1440,13 @@
 
 static PyMethodDef mpz_methods[] = {
 #ifdef MPZ_CONVERSIONS_AS_METHODS
-	{"int",			mpz_int},
-	{"long",		mpz_long},
-	{"float",		mpz_float},
-	{"hex",			mpz_hex},
-	{"oct",			mpz_oct},
+	{"int",			mpz_int,   METH_NOARGS},
+	{"long",		mpz_long,  METH_NOARGS},
+	{"float",		mpz_float, METH_NOARGS},
+	{"hex",			mpz_hex,   METH_NOARGS},
+	{"oct",			mpz_oct,   METH_NOARGS},
 #endif /* def MPZ_CONVERSIONS_AS_METHODS */
-	{"binary",		(PyCFunction)mpz_binary},
+	{"binary",		(PyCFunction)mpz_binary, METH_NOARGS},
 	{NULL,			NULL}		/* sentinel */
 };
 
diff --git a/Modules/nismodule.c b/Modules/nismodule.c
index f8a9246..f66e9a1 100644
--- a/Modules/nismodule.c
+++ b/Modules/nismodule.c
@@ -120,7 +120,7 @@
 	PyObject *res;
 	int fix;
 
-	if (!PyArg_Parse(args, "(t#s)", &key, &keylen, &map))
+	if (!PyArg_ParseTuple(args, "t#s:match", &key, &keylen, &map))
 		return NULL;
 	if ((err = yp_get_default_domain(&domain)) != 0)
 		return nis_error(err);
@@ -149,7 +149,7 @@
 	PyObject *dict;
 	int err;
 
-	if (!PyArg_Parse(args, "s", &map))
+	if (!PyArg_ParseTuple(args, "s:cat", &map))
 		return NULL;
 	if ((err = yp_get_default_domain(&domain)) != 0)
 		return nis_error(err);
@@ -338,13 +338,11 @@
 }
 
 static PyObject *
-nis_maps (PyObject *self, PyObject *args)
+nis_maps (PyObject *self)
 {
 	nismaplist *maps;
 	PyObject *list;
 
-        if (!PyArg_NoArgs(args))
-		return NULL;
 	if ((maps = nis_maplist ()) == NULL)
 		return NULL;
 	if ((list = PyList_New(0)) == NULL)
@@ -364,9 +362,9 @@
 }
 
 static PyMethodDef nis_methods[] = {
-	{"match",	nis_match, METH_OLDARGS},
-	{"cat",		nis_cat, METH_OLDARGS},
-	{"maps",	nis_maps, METH_OLDARGS},
+	{"match",	nis_match, METH_VARARGS},
+	{"cat",		nis_cat, METH_VARARGS},
+	{"maps",	(PyCFunction)nis_maps, METH_NOARGS},
 	{NULL,		NULL}		 /* Sentinel */
 };
 
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 08c86d5..9656bba 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -84,7 +84,7 @@
 {
 	int uid;
 	struct passwd *p;
-	if (!PyArg_Parse(args, "i", &uid))
+	if (!PyArg_ParseTuple(args, "i:getpwuid", &uid))
 		return NULL;
 	if ((p = getpwuid(uid)) == NULL) {
 		PyErr_SetString(PyExc_KeyError, "getpwuid(): uid not found");
@@ -103,7 +103,7 @@
 {
 	char *name;
 	struct passwd *p;
-	if (!PyArg_Parse(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:getpwnam", &name))
 		return NULL;
 	if ((p = getpwnam(name)) == NULL) {
 		PyErr_SetString(PyExc_KeyError, "getpwnam(): name not found");
@@ -146,8 +146,8 @@
 #endif
 
 static PyMethodDef pwd_methods[] = {
-	{"getpwuid",	pwd_getpwuid, METH_OLDARGS, pwd_getpwuid__doc__},
-	{"getpwnam",	pwd_getpwnam, METH_OLDARGS, pwd_getpwnam__doc__},
+	{"getpwuid",	pwd_getpwuid, METH_VARARGS, pwd_getpwuid__doc__},
+	{"getpwnam",	pwd_getpwnam, METH_VARARGS, pwd_getpwnam__doc__},
 #ifdef HAVE_GETPWENT
 	{"getpwall",	(PyCFunction)pwd_getpwall,
 		METH_NOARGS,  pwd_getpwall__doc__},
diff --git a/Modules/regexmodule.c b/Modules/regexmodule.c
index e65258d..d449604 100644
--- a/Modules/regexmodule.c
+++ b/Modules/regexmodule.c
@@ -583,7 +583,7 @@
 	PyObject *pat, *string;
 	PyObject *tuple, *v;
 
-	if (!PyArg_Parse(args, "(SS)", &pat, &string))
+	if (!PyArg_ParseTuple(args, "SS:match", &pat, &string))
 		return NULL;
 	if (update_cache(pat) < 0)
 		return NULL;
@@ -601,7 +601,7 @@
 	PyObject *pat, *string;
 	PyObject *tuple, *v;
 
-	if (!PyArg_Parse(args, "(SS)", &pat, &string))
+	if (!PyArg_ParseTuple(args, "SS:search", &pat, &string))
 		return NULL;
 	if (update_cache(pat) < 0)
 		return NULL;
@@ -617,7 +617,7 @@
 regex_set_syntax(PyObject *self, PyObject *args)
 {
 	int syntax;
-	if (!PyArg_Parse(args, "i", &syntax))
+	if (!PyArg_ParseTuple(args, "i:set_syntax", &syntax))
 		return NULL;
 	syntax = re_set_syntax(syntax);
 	/* wipe the global pattern cache */
@@ -629,10 +629,8 @@
 }
 
 static PyObject *
-regex_get_syntax(PyObject *self, PyObject *args)
+regex_get_syntax(PyObject *self)
 {
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	return PyInt_FromLong((long)re_syntax);
 }
 
@@ -640,10 +638,10 @@
 static struct PyMethodDef regex_global_methods[] = {
 	{"compile",	regex_compile, METH_VARARGS},
 	{"symcomp",	regex_symcomp, METH_VARARGS},
-	{"match",	regex_match, METH_OLDARGS},
-	{"search",	regex_search, METH_OLDARGS},
-	{"set_syntax",	regex_set_syntax, METH_OLDARGS},
-	{"get_syntax",  regex_get_syntax, METH_OLDARGS},
+	{"match",	regex_match, METH_VARARGS},
+	{"search",	regex_search, METH_VARARGS},
+	{"set_syntax",	regex_set_syntax, METH_VARARGS},
+	{"get_syntax",  (PyCFunction)regex_get_syntax, METH_NOARGS},
 	{NULL,		NULL}		     /* sentinel */
 };
 
diff --git a/Modules/rgbimgmodule.c b/Modules/rgbimgmodule.c
index 828577f..596ea4f 100644
--- a/Modules/rgbimgmodule.c
+++ b/Modules/rgbimgmodule.c
@@ -236,7 +236,7 @@
 	IMAGE image;
 	FILE *inf;
 
-	if (!PyArg_Parse(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:sizeofimage", &name))
 		return NULL;
 
 	inf = fopen(name, "rb");
@@ -275,7 +275,7 @@
 	int rlebuflen;
 	PyObject *rv = NULL;
 
-	if (!PyArg_Parse(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:longimagedata", &name))
 		return NULL;
 
 	inf = fopen(name,"rb");
@@ -570,8 +570,8 @@
 	int rlebuflen, goodwrite;
 	PyObject *retval = NULL;
 
-	if (!PyArg_Parse(args, "(s#iiis)", &lptr, &len, &xsize, &ysize, &zsize,
-			 &name))
+	if (!PyArg_ParseTuple(args, "s#iiis:longstoimage", &lptr, &len,
+			      &xsize, &ysize, &zsize, &name))
 		return NULL;
 
 	goodwrite = 1;
@@ -734,7 +734,7 @@
 {
 	int order, oldorder;
 
-	if (!PyArg_Parse(args, "i", &order))
+	if (!PyArg_ParseTuple(args, "i:ttob", &order))
 		return NULL;
 	oldorder = reverse_order;
 	reverse_order = order;
@@ -743,10 +743,10 @@
 
 static PyMethodDef
 rgbimg_methods[] = {
-	{"sizeofimage",	   sizeofimage, METH_OLDARGS},
-	{"longimagedata",  longimagedata, METH_OLDARGS},
-	{"longstoimage",   longstoimage, METH_OLDARGS},
-	{"ttob",	   ttob, METH_OLDARGS},
+	{"sizeofimage",	   sizeofimage, METH_VARARGS},
+	{"longimagedata",  longimagedata, METH_VARARGS},
+	{"longstoimage",   longstoimage, METH_VARARGS},
+	{"ttob",	   ttob, METH_VARARGS},
 	{NULL,             NULL}	     /* sentinel */
 };
 
diff --git a/Modules/rotormodule.c b/Modules/rotormodule.c
index 23ded46..ea91af0 100644
--- a/Modules/rotormodule.c
+++ b/Modules/rotormodule.c
@@ -463,7 +463,7 @@
 	PyObject *rtn = NULL;
 	char *tmp;
 
-	if (!PyArg_Parse(args, "s#", &string, &len))
+	if (!PyArg_ParseTuple(args, "s#:encrypt", &string, &len))
 		return NULL;
 	if (!(tmp = PyMem_NEW(char, len+5))) {
 		PyErr_NoMemory();
@@ -485,7 +485,7 @@
 	PyObject *rtn = NULL;
 	char *tmp;
 
-	if (!PyArg_Parse(args, "s#", &string, &len))
+	if (!PyArg_ParseTuple(args, "s#:encrypt_more", &string, &len))
 		return NULL;
 	if (!(tmp = PyMem_NEW(char, len+5))) {
 		PyErr_NoMemory();
@@ -507,7 +507,7 @@
 	PyObject *rtn = NULL;
 	char *tmp;
 
-	if (!PyArg_Parse(args, "s#", &string, &len))
+	if (!PyArg_ParseTuple(args, "s#:decrypt", &string, &len))
 		return NULL;
 	if (!(tmp = PyMem_NEW(char, len+5))) {
 		PyErr_NoMemory();
@@ -529,7 +529,7 @@
 	PyObject *rtn = NULL;
 	char *tmp;
 
-	if (!PyArg_Parse(args, "s#", &string, &len))
+	if (!PyArg_ParseTuple(args, "s#:decrypt_more", &string, &len))
 		return NULL;
 	if (!(tmp = PyMem_NEW(char, len+5))) {
 		PyErr_NoMemory();
@@ -558,10 +558,10 @@
 
 static struct PyMethodDef
 rotorobj_methods[] = {
-	{"encrypt",	(PyCFunction)rotorobj_encrypt, METH_OLDARGS},
-	{"encryptmore",	(PyCFunction)rotorobj_encrypt_more, METH_OLDARGS},
-	{"decrypt",	(PyCFunction)rotorobj_decrypt, METH_OLDARGS},
-	{"decryptmore",	(PyCFunction)rotorobj_decrypt_more, METH_OLDARGS},
+	{"encrypt",	(PyCFunction)rotorobj_encrypt, METH_VARARGS},
+	{"encryptmore",	(PyCFunction)rotorobj_encrypt_more, METH_VARARGS},
+	{"decrypt",	(PyCFunction)rotorobj_decrypt, METH_VARARGS},
+	{"decryptmore",	(PyCFunction)rotorobj_decrypt_more, METH_VARARGS},
 	{"setkey",	(PyCFunction)rotorobj_setkey, METH_VARARGS},
 	{NULL,		NULL}		/* sentinel */
 };
@@ -611,7 +611,7 @@
 
 static struct PyMethodDef
 rotor_methods[] = {
-	{"newrotor",  rotor_rotor, 1},
+	{"newrotor",  rotor_rotor, METH_VARARGS},
 	{NULL,        NULL}		     /* sentinel */
 };
 
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 9255bad..f6027ab 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -149,7 +149,7 @@
 signal_alarm(PyObject *self, PyObject *args)
 {
 	int t;
-	if (!PyArg_Parse(args, "i", &t))
+	if (!PyArg_ParseTuple(args, "i:alarm", &t))
 		return NULL;
 	/* alarm() returns the number of seconds remaining */
 	return PyInt_FromLong((long)alarm(t));
@@ -192,7 +192,7 @@
 	int sig_num;
 	PyObject *old_handler;
 	void (*func)(int);
-	if (!PyArg_Parse(args, "(iO)", &sig_num, &obj))
+	if (!PyArg_ParseTuple(args, "iO:signal", &sig_num, &obj))
 		return NULL;
 #ifdef WITH_THREAD
 	if (PyThread_get_thread_ident() != main_thread) {
@@ -248,7 +248,7 @@
 {
 	int sig_num;
 	PyObject *old_handler;
-	if (!PyArg_Parse(args, "i", &sig_num))
+	if (!PyArg_ParseTuple(args, "i:getsignal", &sig_num))
 		return NULL;
 	if (sig_num < 1 || sig_num >= NSIG) {
 		PyErr_SetString(PyExc_ValueError,
@@ -274,16 +274,16 @@
 /* List of functions defined in the module */
 static PyMethodDef signal_methods[] = {
 #ifdef HAVE_ALARM
-	{"alarm",	        signal_alarm, METH_OLDARGS, alarm_doc},
+	{"alarm",	        signal_alarm, METH_VARARGS, alarm_doc},
 #endif
-	{"signal",	        signal_signal, METH_OLDARGS, signal_doc},
-	{"getsignal",	        signal_getsignal, METH_OLDARGS, getsignal_doc},
+	{"signal",	        signal_signal, METH_VARARGS, signal_doc},
+	{"getsignal",	        signal_getsignal, METH_VARARGS, getsignal_doc},
 #ifdef HAVE_PAUSE
 	{"pause",	        (PyCFunction)signal_pause,
 	 METH_NOARGS,pause_doc},
 #endif
 	{"default_int_handler", signal_default_int_handler, 
-	 METH_OLDARGS, default_int_handler_doc},
+	 METH_VARARGS, default_int_handler_doc},
 	{NULL,			NULL}		/* sentinel */
 };
 
diff --git a/Modules/sunaudiodev.c b/Modules/sunaudiodev.c
index 514cab6..506ee33 100644
--- a/Modules/sunaudiodev.c
+++ b/Modules/sunaudiodev.c
@@ -58,7 +58,7 @@
 	char* opendev;
 
 	/* Check arg for r/w/rw */
-	if (!PyArg_Parse(args, "s", &mode))
+	if (!PyArg_ParseTuple(args, "s", &mode))
 		return NULL;
 	if (strcmp(mode, "r") == 0)
 		imode = 0;
@@ -133,7 +133,7 @@
 	char *cp;
 	PyObject *rv;
 	
-        if (!PyArg_Parse(args, "i", &size))
+        if (!PyArg_ParseTuple(args, "i:read", &size))
 		return NULL;
 	rv = PyString_FromStringAndSize(NULL, size);
 	if (rv == NULL)
@@ -169,7 +169,7 @@
         char *cp;
 	int count, size;
 	
-        if (!PyArg_Parse(args, "s#", &cp, &size))
+        if (!PyArg_ParseTuple(args, "s#:write", &cp, &size))
 		return NULL;
 
 	count = write(self->x_fd, cp, size);
@@ -188,12 +188,10 @@
 }
 
 static PyObject *
-sad_getinfo(sadobject *self, PyObject *args)
+sad_getinfo(sadobject *self)
 {
 	sadstatusobject *rv;
 
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (!(rv = sads_alloc()))
 		return NULL;
 
@@ -222,12 +220,10 @@
 }
 
 static PyObject *
-sad_ibufcount(sadobject *self, PyObject *args)
+sad_ibufcount(sadobject *self)
 {
 	audio_info_t ai;
     
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (ioctl(self->x_fd, AUDIO_GETINFO, &ai) < 0) {
 		PyErr_SetFromErrno(SunAudioError);
 		return NULL;
@@ -236,12 +232,10 @@
 }
 
 static PyObject *
-sad_obufcount(sadobject *self, PyObject *args)
+sad_obufcount(sadobject *self)
 {
 	audio_info_t ai;
     
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (ioctl(self->x_fd, AUDIO_GETINFO, &ai) < 0) {
 		PyErr_SetFromErrno(SunAudioError);
 		return NULL;
@@ -254,11 +248,8 @@
 }
 
 static PyObject *
-sad_drain(sadobject *self, PyObject *args)
+sad_drain(sadobject *self)
 {
-    
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (ioctl(self->x_fd, AUDIO_DRAIN, 0) < 0) {
 		PyErr_SetFromErrno(SunAudioError);
 		return NULL;
@@ -269,12 +260,10 @@
 
 #ifdef SOLARIS
 static PyObject *
-sad_getdev(sadobject *self, PyObject *args)
+sad_getdev(sadobject *self)
 {
 	struct audio_device ad;
 
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (ioctl(self->x_fd, AUDIO_GETDEV, &ad) < 0) {
 		PyErr_SetFromErrno(SunAudioError);
 		return NULL;
@@ -284,11 +273,8 @@
 #endif
 
 static PyObject *
-sad_flush(sadobject *self, PyObject *args)
+sad_flush(sadobject *self)
 {
-    
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (ioctl(self->x_fd, I_FLUSH, FLUSHW) < 0) {
 		PyErr_SetFromErrno(SunAudioError);
 		return NULL;
@@ -298,11 +284,9 @@
 }
 
 static PyObject *
-sad_close(sadobject *self, PyObject *args)
+sad_close(sadobject *self)
 {
     
-	if (!PyArg_Parse(args, ""))
-		return NULL;
 	if (self->x_fd >= 0) {
 		close(self->x_fd);
 		self->x_fd = -1;
@@ -312,30 +296,27 @@
 }
 
 static PyObject *
-sad_fileno(sadobject *self, PyObject *args)
+sad_fileno(sadobject *self)
 {
-	if (!PyArg_Parse(args, ""))
-		return NULL;
-
 	return PyInt_FromLong(self->x_fd);
 }
 
 
 static PyMethodDef sad_methods[] = {
-        { "read",	(PyCFunction)sad_read, METH_OLDARGS },
-        { "write",	(PyCFunction)sad_write, METH_OLDARGS },
-        { "ibufcount",	(PyCFunction)sad_ibufcount, METH_OLDARGS },
-        { "obufcount",	(PyCFunction)sad_obufcount, METH_OLDARGS },
+        { "read",	(PyCFunction)sad_read, METH_VARARGS },
+        { "write",	(PyCFunction)sad_write, METH_VARARGS },
+        { "ibufcount",	(PyCFunction)sad_ibufcount, METH_NOARGS },
+        { "obufcount",	(PyCFunction)sad_obufcount, METH_NOARGS },
 #define CTL_METHODS 4
-        { "getinfo",	(PyCFunction)sad_getinfo, METH_OLDARGS },
-        { "setinfo",	(PyCFunction)sad_setinfo, METH_OLDARGS },
-        { "drain",	(PyCFunction)sad_drain, METH_OLDARGS },
-        { "flush",	(PyCFunction)sad_flush, METH_OLDARGS },
+        { "getinfo",	(PyCFunction)sad_getinfo, METH_NOARGS },
+        { "setinfo",	(PyCFunction)sad_setinfo, METH_O},
+        { "drain",	(PyCFunction)sad_drain, METH_NOARGS },
+        { "flush",	(PyCFunction)sad_flush, METH_NOARGS },
 #ifdef SOLARIS
-	{ "getdev",	(PyCFunction)sad_getdev, METH_OLDARGS },
+	{ "getdev",	(PyCFunction)sad_getdev, METH_NOARGS },
 #endif
-        { "close",	(PyCFunction)sad_close, METH_OLDARGS },
-	{ "fileno",     (PyCFunction)sad_fileno, METH_OLDARGS },
+        { "close",	(PyCFunction)sad_close, METH_NOARGS },
+	{ "fileno",     (PyCFunction)sad_fileno, METH_NOARGS },
 	{NULL,		NULL}		/* sentinel */
 };
 
@@ -465,7 +446,7 @@
 }
     
 static PyMethodDef sunaudiodev_methods[] = {
-    { "open", sadopen, METH_OLDARGS },
+    { "open", sadopen, METH_VARARGS },
     { 0, 0 },
 };
 
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c
index 21313b5..2459c3b 100644
--- a/Modules/threadmodule.c
+++ b/Modules/threadmodule.c
@@ -54,14 +54,10 @@
 static PyObject *
 lock_PyThread_acquire_lock(lockobject *self, PyObject *args)
 {
-	int i;
+	int i = 1;
 
-	if (args != NULL) {
-		if (!PyArg_Parse(args, "i", &i))
-			return NULL;
-	}
-	else
-		i = 1;
+	if (!PyArg_ParseTuple(args, "|i:acquire", &i))
+		return NULL;
 
 	Py_BEGIN_ALLOW_THREADS
 	i = PyThread_acquire_lock(self->lock_lock, i);
@@ -127,9 +123,9 @@
 
 static PyMethodDef lock_methods[] = {
 	{"acquire_lock", (PyCFunction)lock_PyThread_acquire_lock, 
-	 METH_OLDARGS, acquire_doc},
+	 METH_VARARGS, acquire_doc},
 	{"acquire",      (PyCFunction)lock_PyThread_acquire_lock, 
-	 METH_OLDARGS, acquire_doc},
+	 METH_VARARGS, acquire_doc},
 	{"release_lock", (PyCFunction)lock_PyThread_release_lock, 
 	 METH_NOARGS, release_doc},
 	{"release",      (PyCFunction)lock_PyThread_release_lock, 
@@ -279,7 +275,7 @@
 thread_PyThread_exit_prog(PyObject *self, PyObject *args)
 {
 	int sts;
-	if (!PyArg_Parse(args, "i", &sts))
+	if (!PyArg_ParseTuple(args, "i:exit_prog", &sts))
 		return NULL;
 	Py_Exit(sts); /* Calls PyThread_exit_prog(sts) or _PyThread_exit_prog(sts) */
 	for (;;) { } /* Should not be reached */
@@ -339,7 +335,8 @@
 	{"get_ident",		(PyCFunction)thread_get_ident, 
 	 METH_NOARGS, get_ident_doc},
 #ifndef NO_EXIT_PROG
-	{"exit_prog",		(PyCFunction)thread_PyThread_exit_prog},
+	{"exit_prog",		(PyCFunction)thread_PyThread_exit_prog,
+	 METH_VARARGS},
 #endif
 	{NULL,			NULL}		/* sentinel */
 };