diff --git a/Mac/Modules/snd/Sndmodule.c b/Mac/Modules/snd/Sndmodule.c
index 0f71b0d..d2511cf 100644
--- a/Mac/Modules/snd/Sndmodule.c
+++ b/Mac/Modules/snd/Sndmodule.c
@@ -69,8 +69,13 @@
 {
 	return Py_BuildValue("iiiii",
 	                     nv.majorRev,
+#ifdef THINK_C
 	                     nv.minorRev,
 	                     nv.bugFixRev,
+#else
+	                     (nv.minorAndBugRev>>4) & 0xf,
+	                     nv.minorAndBugRev & 0xf,
+#endif
 	                     nv.stage,
 	                     nv.nonRelRev);
 }
@@ -171,7 +176,7 @@
 {
 	PyObject *_res = NULL;
 	OSErr _err;
-	Handle sndHdl;
+	SndListHandle sndHdl;
 	Boolean async;
 	if (!PyArg_ParseTuple(_args, "O&b",
 	                      ResObj_Convert, &sndHdl,
@@ -277,7 +282,7 @@
 	{"SndDoImmediate", (PyCFunction)SndCh_SndDoImmediate, 1,
 	 "(SndCommand cmd) -> None"},
 	{"SndPlay", (PyCFunction)SndCh_SndPlay, 1,
-	 "(Handle sndHdl, Boolean async) -> None"},
+	 "(SndListHandle sndHdl, Boolean async) -> None"},
 	{"SndStartFilePlay", (PyCFunction)SndCh_SndStartFilePlay, 1,
 	 "(short fRefNum, short resNum, long bufferSize, Boolean async) -> None"},
 	{"SndPauseFilePlay", (PyCFunction)SndCh_SndPauseFilePlay, 1,
@@ -331,7 +336,7 @@
 	                      &init,
 	                      &userRoutine))
 		return NULL;
-	if (userRoutine != Py_None && !callable(userRoutine))
+	if (userRoutine != Py_None && !PyCallable_Check(userRoutine))
 	{
 		PyErr_SetString(PyExc_TypeError, "callback must be callable");
 		goto userRoutine__error__;
@@ -402,51 +407,6 @@
 	return _res;
 }
 
-static PyObject *Snd_StartSound(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	char *synthRec__in__;
-	long synthRec__len__;
-	if (!PyArg_ParseTuple(_args, "s#",
-	                      &synthRec__in__, &synthRec__len__))
-		return NULL;
-	StartSound(synthRec__in__, synthRec__len__,
-	           (SndCompletionProcPtr)0);
-	Py_INCREF(Py_None);
-	_res = Py_None;
- synthRec__error__: ;
-	return _res;
-}
-
-static PyObject *Snd_StopSound(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	StopSound();
-	Py_INCREF(Py_None);
-	_res = Py_None;
-	return _res;
-}
-
-static PyObject *Snd_SoundDone(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	Boolean _rv;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	_rv = SoundDone();
-	_res = Py_BuildValue("b",
-	                     _rv);
-	return _res;
-}
-
 static PyObject *Snd_SndSoundManagerVersion(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -704,12 +664,6 @@
 	 "(short level) -> None"},
 	{"GetSoundVol", (PyCFunction)Snd_GetSoundVol, 1,
 	 "() -> (short level)"},
-	{"StartSound", (PyCFunction)Snd_StartSound, 1,
-	 "(Buffer synthRec) -> None"},
-	{"StopSound", (PyCFunction)Snd_StopSound, 1,
-	 "() -> None"},
-	{"SoundDone", (PyCFunction)Snd_SoundDone, 1,
-	 "() -> (Boolean _rv)"},
 	{"SndSoundManagerVersion", (PyCFunction)Snd_SndSoundManagerVersion, 1,
 	 "() -> (NumVersion _rv)"},
 	{"SndManagerStatus", (PyCFunction)Snd_SndManagerStatus, 1,
