Export type objects to Python
diff --git a/Mac/Modules/ae/AEmodule.c b/Mac/Modules/ae/AEmodule.c
index a2a8b14..ed20b40 100644
--- a/Mac/Modules/ae/AEmodule.c
+++ b/Mac/Modules/ae/AEmodule.c
@@ -1180,6 +1180,10 @@
 	if (AE_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", AE_Error) != 0)
 		Py_FatalError("can't initialize AE.Error");
+	AEDesc_Type.ob_type = &PyType_Type;
+	Py_INCREF(&AEDesc_Type);
+	if (PyDict_SetItemString(d, "AEDescType", (PyObject *)&AEDesc_Type) != 0)
+		Py_FatalError("can't initialize AEDescType");
 }
 
 /* ========================= End module AE ========================== */
diff --git a/Mac/Modules/cm/Cmmodule.c b/Mac/Modules/cm/Cmmodule.c
index 93aab45..fe35685 100644
--- a/Mac/Modules/cm/Cmmodule.c
+++ b/Mac/Modules/cm/Cmmodule.c
@@ -761,6 +761,14 @@
 	if (Cm_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Cm_Error) != 0)
 		Py_FatalError("can't initialize Cm.Error");
+	ComponentInstance_Type.ob_type = &PyType_Type;
+	Py_INCREF(&ComponentInstance_Type);
+	if (PyDict_SetItemString(d, "ComponentInstanceType", (PyObject *)&ComponentInstance_Type) != 0)
+		Py_FatalError("can't initialize ComponentInstanceType");
+	Component_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Component_Type);
+	if (PyDict_SetItemString(d, "ComponentType", (PyObject *)&Component_Type) != 0)
+		Py_FatalError("can't initialize ComponentType");
 }
 
 /* ========================= End module Cm ========================== */
diff --git a/Mac/Modules/ctbmodule.c b/Mac/Modules/ctbmodule.c
index 907b7bb..6eabca9 100644
--- a/Mac/Modules/ctbmodule.c
+++ b/Mac/Modules/ctbmodule.c
@@ -478,7 +478,7 @@
 statichere PyTypeObject ctbcmtype = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,			/*ob_size*/
-	"ctbcm",			/*tp_name*/
+	"CTBConnectionMgr",	/*tp_name*/
 	sizeof(ctbcmobject),	/*tp_basicsize*/
 	0,			/*tp_itemsize*/
 	/* methods */
@@ -608,6 +608,9 @@
 	
 	ErrorObject = PyString_FromString("ctb.error");
 	PyDict_SetItemString(d, "error", ErrorObject);
+	ctbcmtype.ob_type = &PyType_Type;
+	Py_INCREF(&ctbcmtype);
+	PyDict_SetItemString(d, "CTBConnectionMgrType", (PyObject *)&ctbcmtype);
 
 	/* Check for errors */
 	if (PyErr_Occurred())
diff --git a/Mac/Modules/ctl/Ctlmodule.c b/Mac/Modules/ctl/Ctlmodule.c
index 654f671..573f581 100644
--- a/Mac/Modules/ctl/Ctlmodule.c
+++ b/Mac/Modules/ctl/Ctlmodule.c
@@ -733,6 +733,10 @@
 	if (Ctl_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Ctl_Error) != 0)
 		Py_FatalError("can't initialize Ctl.Error");
+	Control_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Control_Type);
+	if (PyDict_SetItemString(d, "ControlType", (PyObject *)&Control_Type) != 0)
+		Py_FatalError("can't initialize ControlType");
 }
 
 /* ========================= End module Ctl ========================= */
diff --git a/Mac/Modules/ctl/ctledit.py b/Mac/Modules/ctl/ctledit.py
index 9240851..a23eef8 100644
--- a/Mac/Modules/ctl/ctledit.py
+++ b/Mac/Modules/ctl/ctledit.py
@@ -11,7 +11,7 @@
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
 	if ( _self->ob_itself ) {
-		SetCRefCon(_self->ob_itself, (long)0); /* Make it forget about us */
+		SetControlReference(_self->ob_itself, (long)0); /* Make it forget about us */
 		DisposeControl(_self->ob_itself);
 		_self->ob_itself = NULL;
 	}
diff --git a/Mac/Modules/dlg/Dlgmodule.c b/Mac/Modules/dlg/Dlgmodule.c
index 5949ea1..7ca2a59 100644
--- a/Mac/Modules/dlg/Dlgmodule.c
+++ b/Mac/Modules/dlg/Dlgmodule.c
@@ -1008,6 +1008,10 @@
 	if (Dlg_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Dlg_Error) != 0)
 		Py_FatalError("can't initialize Dlg.Error");
+	Dialog_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Dialog_Type);
+	if (PyDict_SetItemString(d, "DialogType", (PyObject *)&Dialog_Type) != 0)
+		Py_FatalError("can't initialize DialogType");
 }
 
 /* ========================= End module Dlg ========================= */
diff --git a/Mac/Modules/help/Helpmodule.c b/Mac/Modules/help/Helpmodule.c
index aac22ad..e6cb0a2 100644
--- a/Mac/Modules/help/Helpmodule.c
+++ b/Mac/Modules/help/Helpmodule.c
@@ -60,7 +60,7 @@
 	_err = HMGetHelpMenuHandle(&mh);
 	if (_err != noErr) return PyMac_Error(_err);
 	_res = Py_BuildValue("O&",
-	                     ResObj_New, mh);
+	                     MenuObj_New, mh);
 	return _res;
 }
 
diff --git a/Mac/Modules/help/helpsupport.py b/Mac/Modules/help/helpsupport.py
index 570ac32..1e7ac84 100644
--- a/Mac/Modules/help/helpsupport.py
+++ b/Mac/Modules/help/helpsupport.py
@@ -21,7 +21,7 @@
 from macsupport import *
 
 # Create the type objects
-MenuRef = OpaqueByValueType("MenuRef", "ResObj")
+MenuRef = OpaqueByValueType("MenuRef", "MenuObj")
 
 
 #WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX)
diff --git a/Mac/Modules/list/Listmodule.c b/Mac/Modules/list/Listmodule.c
index b0ce515..e0eace9 100644
--- a/Mac/Modules/list/Listmodule.c
+++ b/Mac/Modules/list/Listmodule.c
@@ -673,6 +673,10 @@
 	if (List_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", List_Error) != 0)
 		Py_FatalError("can't initialize List.Error");
+	List_Type.ob_type = &PyType_Type;
+	Py_INCREF(&List_Type);
+	if (PyDict_SetItemString(d, "ListType", (PyObject *)&List_Type) != 0)
+		Py_FatalError("can't initialize ListType");
 }
 
 /* ======================== End module List ========================= */
diff --git a/Mac/Modules/macfsmodule.c b/Mac/Modules/macfsmodule.c
index 4bea8ce..2c5af1e 100644
--- a/Mac/Modules/macfsmodule.c
+++ b/Mac/Modules/macfsmodule.c
@@ -313,7 +313,7 @@
 static PyTypeObject Mfsitype = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,				/*ob_size*/
-	"FInfo object",			/*tp_name*/
+	"FInfo",			/*tp_name*/
 	sizeof(mfsiobject),		/*tp_basicsize*/
 	0,				/*tp_itemsize*/
 	/* methods */
@@ -982,6 +982,15 @@
 	ErrorObject = PyString_FromString("macfs.error");
 	PyDict_SetItemString(d, "error", ErrorObject);
 
+	Mfsatype.ob_type = &PyType_Type;
+	Py_INCREF(&Mfsatype);
+	PyDict_SetItemString(d, "AliasType", (PyObject *)&Mfsatype);
+	Mfsstype.ob_type = &PyType_Type;
+	Py_INCREF(&Mfsstype);
+	PyDict_SetItemString(d, "FSSpecType", (PyObject *)&Mfsstype);
+	Mfsitype.ob_type = &PyType_Type;
+	Py_INCREF(&Mfsitype);
+	PyDict_SetItemString(d, "FInfoType", (PyObject *)&Mfsitype);
 	/* XXXX Add constants here */
 	
 	/* Check for errors */
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index 1717d39..6fc3cf4 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -278,7 +278,7 @@
 static PyTypeObject Rftype = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,				/*ob_size*/
-	"Resource fork",			/*tp_name*/
+	"ResourceFork",			/*tp_name*/
 	sizeof(rfobject),		/*tp_basicsize*/
 	0,				/*tp_itemsize*/
 	/* methods */
@@ -716,6 +716,10 @@
 	MacOS_Error = PyMac_GetOSErrException();
 	if (MacOS_Error == NULL || PyDict_SetItemString(d, "Error", MacOS_Error) != 0)
 		Py_FatalError("can't define MacOS.Error");
+	Rftype.ob_type = &PyType_Type;
+	Py_INCREF(&Rftype);
+	if (PyDict_SetItemString(d, "ResourceForkType", (PyObject *)&Rftype) != 0)
+		Py_FatalError("can't define MacOS.ResourceForkType");
 	/*
 	** This is a hack: the following constant added to the id() of a string
 	** object gives you the address of the data. Unfortunately, it is needed for
diff --git a/Mac/Modules/menu/Menumodule.c b/Mac/Modules/menu/Menumodule.c
index ac52e39..b09d47d 100644
--- a/Mac/Modules/menu/Menumodule.c
+++ b/Mac/Modules/menu/Menumodule.c
@@ -1038,6 +1038,10 @@
 	if (Menu_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Menu_Error) != 0)
 		Py_FatalError("can't initialize Menu.Error");
+	Menu_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Menu_Type);
+	if (PyDict_SetItemString(d, "MenuType", (PyObject *)&Menu_Type) != 0)
+		Py_FatalError("can't initialize MenuType");
 }
 
 /* ======================== End module Menu ========================= */
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index ee69274..f294d31 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -4265,6 +4265,18 @@
 	if (Qd_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Qd_Error) != 0)
 		Py_FatalError("can't initialize Qd.Error");
+	GrafPort_Type.ob_type = &PyType_Type;
+	Py_INCREF(&GrafPort_Type);
+	if (PyDict_SetItemString(d, "GrafPortType", (PyObject *)&GrafPort_Type) != 0)
+		Py_FatalError("can't initialize GrafPortType");
+	BitMap_Type.ob_type = &PyType_Type;
+	Py_INCREF(&BitMap_Type);
+	if (PyDict_SetItemString(d, "BitMapType", (PyObject *)&BitMap_Type) != 0)
+		Py_FatalError("can't initialize BitMapType");
+	QDGlobalsAccess_Type.ob_type = &PyType_Type;
+	Py_INCREF(&QDGlobalsAccess_Type);
+	if (PyDict_SetItemString(d, "QDGlobalsAccessType", (PyObject *)&QDGlobalsAccess_Type) != 0)
+		Py_FatalError("can't initialize QDGlobalsAccessType");
 
 	{
 		PyObject *o;
diff --git a/Mac/Modules/qt/Qtmodule.c b/Mac/Modules/qt/Qtmodule.c
index 9b2a854..a0a03e2 100644
--- a/Mac/Modules/qt/Qtmodule.c
+++ b/Mac/Modules/qt/Qtmodule.c
@@ -6047,6 +6047,30 @@
 	if (Qt_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Qt_Error) != 0)
 		Py_FatalError("can't initialize Qt.Error");
+	MovieController_Type.ob_type = &PyType_Type;
+	Py_INCREF(&MovieController_Type);
+	if (PyDict_SetItemString(d, "MovieControllerType", (PyObject *)&MovieController_Type) != 0)
+		Py_FatalError("can't initialize MovieControllerType");
+	TimeBase_Type.ob_type = &PyType_Type;
+	Py_INCREF(&TimeBase_Type);
+	if (PyDict_SetItemString(d, "TimeBaseType", (PyObject *)&TimeBase_Type) != 0)
+		Py_FatalError("can't initialize TimeBaseType");
+	UserData_Type.ob_type = &PyType_Type;
+	Py_INCREF(&UserData_Type);
+	if (PyDict_SetItemString(d, "UserDataType", (PyObject *)&UserData_Type) != 0)
+		Py_FatalError("can't initialize UserDataType");
+	Media_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Media_Type);
+	if (PyDict_SetItemString(d, "MediaType", (PyObject *)&Media_Type) != 0)
+		Py_FatalError("can't initialize MediaType");
+	Track_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Track_Type);
+	if (PyDict_SetItemString(d, "TrackType", (PyObject *)&Track_Type) != 0)
+		Py_FatalError("can't initialize TrackType");
+	Movie_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Movie_Type);
+	if (PyDict_SetItemString(d, "MovieType", (PyObject *)&Movie_Type) != 0)
+		Py_FatalError("can't initialize MovieType");
 }
 
 /* ========================= End module Qt ========================== */
diff --git a/Mac/Modules/res/Resmodule.c b/Mac/Modules/res/Resmodule.c
index e903158..f4ed648 100644
--- a/Mac/Modules/res/Resmodule.c
+++ b/Mac/Modules/res/Resmodule.c
@@ -1387,6 +1387,10 @@
 	if (Res_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Res_Error) != 0)
 		Py_FatalError("can't initialize Res.Error");
+	Resource_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Resource_Type);
+	if (PyDict_SetItemString(d, "ResourceType", (PyObject *)&Resource_Type) != 0)
+		Py_FatalError("can't initialize ResourceType");
 }
 
 /* ========================= End module Res ========================= */
diff --git a/Mac/Modules/snd/Sndmodule.c b/Mac/Modules/snd/Sndmodule.c
index 74951ce..36d9fd2 100644
--- a/Mac/Modules/snd/Sndmodule.c
+++ b/Mac/Modules/snd/Sndmodule.c
@@ -797,6 +797,10 @@
 	if (Snd_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Snd_Error) != 0)
 		Py_FatalError("can't initialize Snd.Error");
+	SndChannel_Type.ob_type = &PyType_Type;
+	Py_INCREF(&SndChannel_Type);
+	if (PyDict_SetItemString(d, "SndChannelType", (PyObject *)&SndChannel_Type) != 0)
+		Py_FatalError("can't initialize SndChannelType");
 }
 
 /* ========================= End module Snd ========================= */
diff --git a/Mac/Modules/te/TEmodule.c b/Mac/Modules/te/TEmodule.c
index 3a5a062..611c262 100644
--- a/Mac/Modules/te/TEmodule.c
+++ b/Mac/Modules/te/TEmodule.c
@@ -1034,6 +1034,10 @@
 	if (TE_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", TE_Error) != 0)
 		Py_FatalError("can't initialize TE.Error");
+	TE_Type.ob_type = &PyType_Type;
+	Py_INCREF(&TE_Type);
+	if (PyDict_SetItemString(d, "TEType", (PyObject *)&TE_Type) != 0)
+		Py_FatalError("can't initialize TEType");
 }
 
 /* ========================= End module TE ========================== */
diff --git a/Mac/Modules/waste/wastemodule.c b/Mac/Modules/waste/wastemodule.c
index a832957..32bb7e7 100644
--- a/Mac/Modules/waste/wastemodule.c
+++ b/Mac/Modules/waste/wastemodule.c
@@ -43,8 +43,8 @@
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <WASTE.h>
-#include <WETabs.h>
 #include <WEObjectHandlers.h>
+#include <WETabs.h>
 
 /* Exported by Qdmodule.c: */
 extern PyObject *QdRGB_New(RGBColor *);
@@ -1986,6 +1986,14 @@
 	if (waste_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", waste_Error) != 0)
 		Py_FatalError("can't initialize waste.Error");
+	WEO_Type.ob_type = &PyType_Type;
+	Py_INCREF(&WEO_Type);
+	if (PyDict_SetItemString(d, "WEOType", (PyObject *)&WEO_Type) != 0)
+		Py_FatalError("can't initialize WEOType");
+	waste_Type.ob_type = &PyType_Type;
+	Py_INCREF(&waste_Type);
+	if (PyDict_SetItemString(d, "wasteType", (PyObject *)&waste_Type) != 0)
+		Py_FatalError("can't initialize wasteType");
 
 		callbackdict = PyDict_New();
 		if (callbackdict == NULL || PyDict_SetItemString(d, "callbacks", callbackdict) != 0)
diff --git a/Mac/Modules/win/Winmodule.c b/Mac/Modules/win/Winmodule.c
index 7077b12..eb5b046 100644
--- a/Mac/Modules/win/Winmodule.c
+++ b/Mac/Modules/win/Winmodule.c
@@ -1402,6 +1402,10 @@
 	if (Win_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Win_Error) != 0)
 		Py_FatalError("can't initialize Win.Error");
+	Window_Type.ob_type = &PyType_Type;
+	Py_INCREF(&Window_Type);
+	if (PyDict_SetItemString(d, "WindowType", (PyObject *)&Window_Type) != 0)
+		Py_FatalError("can't initialize WindowType");
 }
 
 /* ========================= End module Win ========================= */