diff --git a/Mac/Modules/qt/Qtmodule.c b/Mac/Modules/qt/Qtmodule.c
index 628a72c..540915e 100644
--- a/Mac/Modules/qt/Qtmodule.c
+++ b/Mac/Modules/qt/Qtmodule.c
@@ -1021,12 +1021,6 @@
 
 #define MovieCtlObj_setattr NULL
 
-#define MovieCtlObj_compare NULL
-
-#define MovieCtlObj_repr NULL
-
-#define MovieCtlObj_hash NULL
-
 PyTypeObject MovieController_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0, /*ob_size*/
@@ -1038,12 +1032,6 @@
 	0, /*tp_print*/
 	(getattrfunc) MovieCtlObj_getattr, /*tp_getattr*/
 	(setattrfunc) MovieCtlObj_setattr, /*tp_setattr*/
-	(cmpfunc) MovieCtlObj_compare, /*tp_compare*/
-	(reprfunc) MovieCtlObj_repr, /*tp_repr*/
-	(PyNumberMethods *)0, /* tp_as_number */
-	(PySequenceMethods *)0, /* tp_as_sequence */
-	(PyMappingMethods *)0, /* tp_as_mapping */
-	(hashfunc) MovieCtlObj_hash, /*tp_hash*/
 };
 
 /* ---------------- End object type MovieController ----------------- */
@@ -1458,12 +1446,6 @@
 
 #define TimeBaseObj_setattr NULL
 
-#define TimeBaseObj_compare NULL
-
-#define TimeBaseObj_repr NULL
-
-#define TimeBaseObj_hash NULL
-
 PyTypeObject TimeBase_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0, /*ob_size*/
@@ -1475,12 +1457,6 @@
 	0, /*tp_print*/
 	(getattrfunc) TimeBaseObj_getattr, /*tp_getattr*/
 	(setattrfunc) TimeBaseObj_setattr, /*tp_setattr*/
-	(cmpfunc) TimeBaseObj_compare, /*tp_compare*/
-	(reprfunc) TimeBaseObj_repr, /*tp_repr*/
-	(PyNumberMethods *)0, /* tp_as_number */
-	(PySequenceMethods *)0, /* tp_as_sequence */
-	(PyMappingMethods *)0, /* tp_as_mapping */
-	(hashfunc) TimeBaseObj_hash, /*tp_hash*/
 };
 
 /* -------------------- End object type TimeBase -------------------- */
@@ -1759,12 +1735,6 @@
 
 #define UserDataObj_setattr NULL
 
-#define UserDataObj_compare NULL
-
-#define UserDataObj_repr NULL
-
-#define UserDataObj_hash NULL
-
 PyTypeObject UserData_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0, /*ob_size*/
@@ -1776,12 +1746,6 @@
 	0, /*tp_print*/
 	(getattrfunc) UserDataObj_getattr, /*tp_getattr*/
 	(setattrfunc) UserDataObj_setattr, /*tp_setattr*/
-	(cmpfunc) UserDataObj_compare, /*tp_compare*/
-	(reprfunc) UserDataObj_repr, /*tp_repr*/
-	(PyNumberMethods *)0, /* tp_as_number */
-	(PySequenceMethods *)0, /* tp_as_sequence */
-	(PyMappingMethods *)0, /* tp_as_mapping */
-	(hashfunc) UserDataObj_hash, /*tp_hash*/
 };
 
 /* -------------------- End object type UserData -------------------- */
@@ -2842,12 +2806,6 @@
 
 #define MediaObj_setattr NULL
 
-#define MediaObj_compare NULL
-
-#define MediaObj_repr NULL
-
-#define MediaObj_hash NULL
-
 PyTypeObject Media_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0, /*ob_size*/
@@ -2859,12 +2817,6 @@
 	0, /*tp_print*/
 	(getattrfunc) MediaObj_getattr, /*tp_getattr*/
 	(setattrfunc) MediaObj_setattr, /*tp_setattr*/
-	(cmpfunc) MediaObj_compare, /*tp_compare*/
-	(reprfunc) MediaObj_repr, /*tp_repr*/
-	(PyNumberMethods *)0, /* tp_as_number */
-	(PySequenceMethods *)0, /* tp_as_sequence */
-	(PyMappingMethods *)0, /* tp_as_mapping */
-	(hashfunc) MediaObj_hash, /*tp_hash*/
 };
 
 /* --------------------- End object type Media ---------------------- */
@@ -4022,12 +3974,6 @@
 
 #define TrackObj_setattr NULL
 
-#define TrackObj_compare NULL
-
-#define TrackObj_repr NULL
-
-#define TrackObj_hash NULL
-
 PyTypeObject Track_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0, /*ob_size*/
@@ -4039,12 +3985,6 @@
 	0, /*tp_print*/
 	(getattrfunc) TrackObj_getattr, /*tp_getattr*/
 	(setattrfunc) TrackObj_setattr, /*tp_setattr*/
-	(cmpfunc) TrackObj_compare, /*tp_compare*/
-	(reprfunc) TrackObj_repr, /*tp_repr*/
-	(PyNumberMethods *)0, /* tp_as_number */
-	(PySequenceMethods *)0, /* tp_as_sequence */
-	(PyMappingMethods *)0, /* tp_as_mapping */
-	(hashfunc) TrackObj_hash, /*tp_hash*/
 };
 
 /* --------------------- End object type Track ---------------------- */
@@ -6169,12 +6109,6 @@
 
 #define MovieObj_setattr NULL
 
-#define MovieObj_compare NULL
-
-#define MovieObj_repr NULL
-
-#define MovieObj_hash NULL
-
 PyTypeObject Movie_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0, /*ob_size*/
@@ -6186,12 +6120,6 @@
 	0, /*tp_print*/
 	(getattrfunc) MovieObj_getattr, /*tp_getattr*/
 	(setattrfunc) MovieObj_setattr, /*tp_setattr*/
-	(cmpfunc) MovieObj_compare, /*tp_compare*/
-	(reprfunc) MovieObj_repr, /*tp_repr*/
-	(PyNumberMethods *)0, /* tp_as_number */
-	(PySequenceMethods *)0, /* tp_as_sequence */
-	(PyMappingMethods *)0, /* tp_as_mapping */
-	(hashfunc) MovieObj_hash, /*tp_hash*/
 };
 
 /* --------------------- End object type Movie ---------------------- */
@@ -7738,21 +7666,6 @@
 	return _res;
 }
 
-static PyObject *Qt_available(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-
-	void *ptr;
-
-	if ( !PyArg_ParseTuple(_args, "") )
-		return NULL;
-	ptr = (void *)&EnterMovies;
-	return Py_BuildValue("i", ((long)ptr != 0));
-
-}
-
 static PyMethodDef Qt_methods[] = {
 	{"EnterMovies", (PyCFunction)Qt_EnterMovies, 1,
 	 "() -> None"},
@@ -7892,8 +7805,6 @@
 	 "(WindowPtr wp, Point startPt, Rect boundsRect) -> None"},
 	{"MoviesTask", (PyCFunction)Qt_MoviesTask, 1,
 	 "(long maxMilliSecToUse) -> None"},
-	{"available", (PyCFunction)Qt_available, 1,
-	 "Return true if Quicktime is available"},
 	{NULL, NULL, 0}
 };
 
diff --git a/Mac/Modules/qt/qtsupport.py b/Mac/Modules/qt/qtsupport.py
index 063a79a..2e26888 100644
--- a/Mac/Modules/qt/qtsupport.py
+++ b/Mac/Modules/qt/qtsupport.py
@@ -253,21 +253,6 @@
 )
 functions.append(f)
 
-# Add manual routines for testing quicktime availability
-available_body = """
-void *ptr;
-
-if ( !PyArg_ParseTuple(_args, "") )
-	return NULL;
-ptr = (void *)&EnterMovies;
-return Py_BuildValue("i", ((long)ptr != 0));
-"""
-
-f = ManualGenerator("available", available_body)
-f.docstring = lambda : "Return true if Quicktime is available"
-
-functions.append(f)
-
 
 # add the populated lists to the generator groups
 # (in a different wordl the scan program would generate this)
