diff --git a/Mac/Modules/cm/Cmmodule.c b/Mac/Modules/cm/Cmmodule.c
index fd8b331..93aab45 100644
--- a/Mac/Modules/cm/Cmmodule.c
+++ b/Mac/Modules/cm/Cmmodule.c
@@ -146,54 +146,6 @@
 	return _res;
 }
 
-static PyObject *CmpInstObj_ComponentFunctionImplemented(_self, _args)
-	ComponentInstanceObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	long _rv;
-	short ftnNumber;
-	if (!PyArg_ParseTuple(_args, "h",
-	                      &ftnNumber))
-		return NULL;
-	_rv = ComponentFunctionImplemented(_self->ob_itself,
-	                                   ftnNumber);
-	_res = Py_BuildValue("l",
-	                     _rv);
-	return _res;
-}
-
-static PyObject *CmpInstObj_GetComponentVersion(_self, _args)
-	ComponentInstanceObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	long _rv;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	_rv = GetComponentVersion(_self->ob_itself);
-	_res = Py_BuildValue("l",
-	                     _rv);
-	return _res;
-}
-
-static PyObject *CmpInstObj_ComponentSetTarget(_self, _args)
-	ComponentInstanceObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	long _rv;
-	ComponentInstance target;
-	if (!PyArg_ParseTuple(_args, "O&",
-	                      CmpInstObj_Convert, &target))
-		return NULL;
-	_rv = ComponentSetTarget(_self->ob_itself,
-	                         target);
-	_res = Py_BuildValue("l",
-	                     _rv);
-	return _res;
-}
-
 static PyObject *CmpInstObj_SetComponentInstanceError(_self, _args)
 	ComponentInstanceObject *_self;
 	PyObject *_args;
@@ -270,17 +222,59 @@
 	return _res;
 }
 
+static PyObject *CmpInstObj_ComponentFunctionImplemented(_self, _args)
+	ComponentInstanceObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	long _rv;
+	short ftnNumber;
+	if (!PyArg_ParseTuple(_args, "h",
+	                      &ftnNumber))
+		return NULL;
+	_rv = ComponentFunctionImplemented(_self->ob_itself,
+	                                   ftnNumber);
+	_res = Py_BuildValue("l",
+	                     _rv);
+	return _res;
+}
+
+static PyObject *CmpInstObj_GetComponentVersion(_self, _args)
+	ComponentInstanceObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	long _rv;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_rv = GetComponentVersion(_self->ob_itself);
+	_res = Py_BuildValue("l",
+	                     _rv);
+	return _res;
+}
+
+static PyObject *CmpInstObj_ComponentSetTarget(_self, _args)
+	ComponentInstanceObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	long _rv;
+	ComponentInstance target;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      CmpInstObj_Convert, &target))
+		return NULL;
+	_rv = ComponentSetTarget(_self->ob_itself,
+	                         target);
+	_res = Py_BuildValue("l",
+	                     _rv);
+	return _res;
+}
+
 static PyMethodDef CmpInstObj_methods[] = {
 	{"CloseComponent", (PyCFunction)CmpInstObj_CloseComponent, 1,
 	 "() -> None"},
 	{"GetComponentInstanceError", (PyCFunction)CmpInstObj_GetComponentInstanceError, 1,
 	 "() -> None"},
-	{"ComponentFunctionImplemented", (PyCFunction)CmpInstObj_ComponentFunctionImplemented, 1,
-	 "(short ftnNumber) -> (long _rv)"},
-	{"GetComponentVersion", (PyCFunction)CmpInstObj_GetComponentVersion, 1,
-	 "() -> (long _rv)"},
-	{"ComponentSetTarget", (PyCFunction)CmpInstObj_ComponentSetTarget, 1,
-	 "(ComponentInstance target) -> (long _rv)"},
 	{"SetComponentInstanceError", (PyCFunction)CmpInstObj_SetComponentInstanceError, 1,
 	 "(OSErr theError) -> None"},
 	{"GetComponentInstanceStorage", (PyCFunction)CmpInstObj_GetComponentInstanceStorage, 1,
@@ -291,6 +285,12 @@
 	 "() -> (long _rv)"},
 	{"SetComponentInstanceA5", (PyCFunction)CmpInstObj_SetComponentInstanceA5, 1,
 	 "(long theA5) -> None"},
+	{"ComponentFunctionImplemented", (PyCFunction)CmpInstObj_ComponentFunctionImplemented, 1,
+	 "(short ftnNumber) -> (long _rv)"},
+	{"GetComponentVersion", (PyCFunction)CmpInstObj_GetComponentVersion, 1,
+	 "() -> (long _rv)"},
+	{"ComponentSetTarget", (PyCFunction)CmpInstObj_ComponentSetTarget, 1,
+	 "(ComponentInstance target) -> (long _rv)"},
 	{NULL, NULL, 0}
 };
 
@@ -609,13 +609,13 @@
 {
 	PyObject *_res = NULL;
 	Component _rv;
-	ComponentResourceHandle tr;
+	ComponentResourceHandle cr;
 	short global;
 	if (!PyArg_ParseTuple(_args, "O&h",
-	                      ResObj_Convert, &tr,
+	                      ResObj_Convert, &cr,
 	                      &global))
 		return NULL;
-	_rv = RegisterComponentResource(tr,
+	_rv = RegisterComponentResource(cr,
 	                                global);
 	_res = Py_BuildValue("O&",
 	                     CmpObj_New, _rv);
@@ -728,7 +728,7 @@
 
 static PyMethodDef Cm_methods[] = {
 	{"RegisterComponentResource", (PyCFunction)Cm_RegisterComponentResource, 1,
-	 "(ComponentResourceHandle tr, short global) -> (Component _rv)"},
+	 "(ComponentResourceHandle cr, short global) -> (Component _rv)"},
 	{"FindNextComponent", (PyCFunction)Cm_FindNextComponent, 1,
 	 "(Component aComponent, ComponentDescription looking) -> (Component _rv)"},
 	{"CountComponents", (PyCFunction)Cm_CountComponents, 1,
diff --git a/Mac/Modules/cm/cmscan.py b/Mac/Modules/cm/cmscan.py
index 95abeed..ea2dc2f 100644
--- a/Mac/Modules/cm/cmscan.py
+++ b/Mac/Modules/cm/cmscan.py
@@ -40,7 +40,17 @@
 
 	def makeblacklistnames(self):
 		return [
-			# "GetComponentInfo"  # XXXX I dont know how the Handle args are expected...
+			"OpenADefaultComponent",
+			"GetComponentTypeModSeed",
+			"OpenAComponentResFile",
+			"CallComponentUnregister",
+			"CallComponentTarget",
+			"CallComponentRegister",
+			"CallComponentVersion",
+			"CallComponentCanDo",
+			"CallComponentClose",
+			"CallComponentOpen",
+			"OpenAComponent",
 			]
 
 	def makeblacklisttypes(self):
@@ -54,6 +64,7 @@
 			"ComponentParameters",
 			
 			"ComponentRoutineUPP",
+			"ComponentMPWorkFunctionUPP",
 			]
 
 	def makerepairinstructions(self):
diff --git a/Mac/Modules/ctbmodule.c b/Mac/Modules/ctbmodule.c
index 024787d..2c58019 100644
--- a/Mac/Modules/ctbmodule.c
+++ b/Mac/Modules/ctbmodule.c
@@ -269,7 +269,7 @@
 	char *buf;
 	ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
 	
-	if (!PyArg_Parse(args, "(s#ili)", &buf, &ilen, &chan, &timeout, &flags))
+	if (!PyArg_Parse(args, "(m#ili)", &buf, &ilen, &chan, &timeout, &flags))
 		return NULL;
 	len = ilen;
 	if ((err=CMWrite(self->hdl, (Ptr)buf, &len, (CMChannel)chan,
diff --git a/Mac/Modules/evt/Evtmodule.c b/Mac/Modules/evt/Evtmodule.c
index 9078e9f..b5bc573 100644
--- a/Mac/Modules/evt/Evtmodule.c
+++ b/Mac/Modules/evt/Evtmodule.c
@@ -43,7 +43,6 @@
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Events.h>
-#include <Desk.h>
 
 #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
 
diff --git a/Mac/Modules/evt/evtsupport.py b/Mac/Modules/evt/evtsupport.py
index 0471a7e..d1cc1d1 100644
--- a/Mac/Modules/evt/evtsupport.py
+++ b/Mac/Modules/evt/evtsupport.py
@@ -36,7 +36,6 @@
 
 includestuff = includestuff + """
 #include <%s>""" % MACHEADERFILE + """
-#include <Desk.h>
 
 #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
 """
diff --git a/Mac/Modules/gestaltmodule.c b/Mac/Modules/gestaltmodule.c
index 0b814e9..8722546 100644
--- a/Mac/Modules/gestaltmodule.c
+++ b/Mac/Modules/gestaltmodule.c
@@ -27,7 +27,7 @@
 #include "Python.h"
 
 #include <Types.h>
-#include <GestaltEqu.h>
+#include <Gestalt.h>
 
 static PyObject *
 gestalt_gestalt(self, args)
diff --git a/Mac/Modules/macfsmodule.c b/Mac/Modules/macfsmodule.c
index 5bd2ce5..1a43d16 100644
--- a/Mac/Modules/macfsmodule.c
+++ b/Mac/Modules/macfsmodule.c
@@ -824,7 +824,7 @@
 	FSSpec *fssp;
 	int size;
 
-	if (!PyArg_ParseTuple(args, "s#", &fssp, &size))
+	if (!PyArg_ParseTuple(args, "m#", &fssp, &size))
 		return NULL;
 	if ( size != sizeof(FSSpec) ) {
 		PyErr_SetString(PyExc_TypeError, "Incorrect size for FSSpec record");
@@ -842,7 +842,7 @@
 	Handle h;
 	int size;
 
-	if (!PyArg_ParseTuple(args, "s#", &dataptr, &size))
+	if (!PyArg_ParseTuple(args, "m#", &dataptr, &size))
 		return NULL;
 	h = NewHandle(size);
 	if ( h == NULL ) {
diff --git a/Mac/Modules/macmodule.c b/Mac/Modules/macmodule.c
index 49c0f8b..8de3c91 100644
--- a/Mac/Modules/macmodule.c
+++ b/Mac/Modules/macmodule.c
@@ -567,7 +567,7 @@
 {
 	int fd, size;
 	char *buffer;
-	if (!PyArg_Parse(args, "(is#)", &fd, &buffer, &size))
+	if (!PyArg_Parse(args, "(im#)", &fd, &buffer, &size))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	size = write(fd, buffer, size);
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index eed4352..89f986b 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -117,7 +117,7 @@
 		PyErr_SetString(PyExc_ValueError, "Operation on closed file");
 		return NULL;
 	}
-	if (!PyArg_ParseTuple(args, "s#", &buffer, &size))
+	if (!PyArg_ParseTuple(args, "m#", &buffer, &size))
 		return NULL;
 	err = FSWrite(self->fRefNum, &size, buffer);
 	if (err) {
diff --git a/Mac/Modules/macspeechmodule.c b/Mac/Modules/macspeechmodule.c
index 7d499d4..6bcc730 100644
--- a/Mac/Modules/macspeechmodule.c
+++ b/Mac/Modules/macspeechmodule.c
@@ -25,7 +25,7 @@
 
 #include "Python.h"
 
-#include <GestaltEqu.h>
+#include <Gestalt.h>
 #include "Speech.h"
 
 #ifdef __MWERKS__
@@ -37,7 +37,7 @@
 #endif /* __MWERKS__ */
 
 #ifdef __powerc
-#include <FragLoad.h>
+#include <CodeFragments.h>
 int lib_available;
 #endif /* __powerc */
 
@@ -150,7 +150,7 @@
 	char *str;
 	int len;
 	
-	if (!PyArg_Parse(args, "s#", &str, &len))
+	if (!PyArg_Parse(args, "m#", &str, &len))
 		return NULL;
 	if ( self->curtext ) {
 		StopSpeech(self->chan);
diff --git a/Mac/Modules/menu/Menumodule.c b/Mac/Modules/menu/Menumodule.c
index 07e1b88..ac52e39 100644
--- a/Mac/Modules/menu/Menumodule.c
+++ b/Mac/Modules/menu/Menumodule.c
@@ -43,7 +43,6 @@
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Devices.h> /* Defines OpenDeskAcc in universal headers */
-#include <Desk.h> /* Defines OpenDeskAcc in old headers */
 #include <Menus.h>
 
 #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
diff --git a/Mac/Modules/menu/menusupport.py b/Mac/Modules/menu/menusupport.py
index 2c7c7c0..80b08b1 100644
--- a/Mac/Modules/menu/menusupport.py
+++ b/Mac/Modules/menu/menusupport.py
@@ -32,7 +32,6 @@
 
 includestuff = includestuff + """
 #include <Devices.h> /* Defines OpenDeskAcc in universal headers */
-#include <Desk.h> /* Defines OpenDeskAcc in old headers */
 #include <%s>""" % MACHEADERFILE + """
 
 #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index af6a92e..843e301 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -43,7 +43,6 @@
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <QuickDraw.h>
-#include <Desk.h>
 
 #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
 
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 61e7dd8..13689ff 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -55,7 +55,6 @@
 
 includestuff = includestuff + """
 #include <%s>""" % MACHEADERFILE + """
-#include <Desk.h>
 
 #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
 
diff --git a/Mac/Modules/qt/Qtmodule.c b/Mac/Modules/qt/Qtmodule.c
index ffba461..a4eedce 100644
--- a/Mac/Modules/qt/Qtmodule.c
+++ b/Mac/Modules/qt/Qtmodule.c
@@ -5730,125 +5730,6 @@
 	return _res;
 }
 
-static PyObject *Qt_GetVideoMediaGraphicsMode(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	HandlerError _rv;
-	MediaHandler mh;
-	long graphicsMode;
-	RGBColor opColor;
-	if (!PyArg_ParseTuple(_args, "O&",
-	                      CmpInstObj_Convert, &mh))
-		return NULL;
-	_rv = GetVideoMediaGraphicsMode(mh,
-	                                &graphicsMode,
-	                                &opColor);
-	_res = Py_BuildValue("llO&",
-	                     _rv,
-	                     graphicsMode,
-	                     QdRGB_New, &opColor);
-	return _res;
-}
-
-static PyObject *Qt_SetVideoMediaGraphicsMode(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	HandlerError _rv;
-	MediaHandler mh;
-	long graphicsMode;
-	RGBColor opColor;
-	if (!PyArg_ParseTuple(_args, "O&lO&",
-	                      CmpInstObj_Convert, &mh,
-	                      &graphicsMode,
-	                      QdRGB_Convert, &opColor))
-		return NULL;
-	_rv = SetVideoMediaGraphicsMode(mh,
-	                                graphicsMode,
-	                                &opColor);
-	_res = Py_BuildValue("l",
-	                     _rv);
-	return _res;
-}
-
-static PyObject *Qt_GetSoundMediaBalance(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	HandlerError _rv;
-	MediaHandler mh;
-	short balance;
-	if (!PyArg_ParseTuple(_args, "O&",
-	                      CmpInstObj_Convert, &mh))
-		return NULL;
-	_rv = GetSoundMediaBalance(mh,
-	                           &balance);
-	_res = Py_BuildValue("lh",
-	                     _rv,
-	                     balance);
-	return _res;
-}
-
-static PyObject *Qt_SetSoundMediaBalance(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	HandlerError _rv;
-	MediaHandler mh;
-	short balance;
-	if (!PyArg_ParseTuple(_args, "O&h",
-	                      CmpInstObj_Convert, &mh,
-	                      &balance))
-		return NULL;
-	_rv = SetSoundMediaBalance(mh,
-	                           balance);
-	_res = Py_BuildValue("l",
-	                     _rv);
-	return _res;
-}
-
-static PyObject *Qt_FindNextText(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	ComponentResult _rv;
-	MediaHandler mh;
-	Ptr text;
-	long size;
-	short findFlags;
-	TimeValue startTime;
-	TimeValue foundTime;
-	TimeValue foundDuration;
-	long offset;
-	if (!PyArg_ParseTuple(_args, "O&slhl",
-	                      CmpInstObj_Convert, &mh,
-	                      &text,
-	                      &size,
-	                      &findFlags,
-	                      &startTime))
-		return NULL;
-	_rv = FindNextText(mh,
-	                   text,
-	                   size,
-	                   findFlags,
-	                   startTime,
-	                   &foundTime,
-	                   &foundDuration,
-	                   &offset);
-	_res = Py_BuildValue("llll",
-	                     _rv,
-	                     foundTime,
-	                     foundDuration,
-	                     offset);
-	return _res;
-}
-
 static PyObject *Qt_NewMovieFromScrap(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -5963,16 +5844,6 @@
 	 "(short fRefNum, long fileOffset, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)"},
 	{"RemoveMovieResource", (PyCFunction)Qt_RemoveMovieResource, 1,
 	 "(short resRefNum, short resId) -> None"},
-	{"GetVideoMediaGraphicsMode", (PyCFunction)Qt_GetVideoMediaGraphicsMode, 1,
-	 "(MediaHandler mh) -> (HandlerError _rv, long graphicsMode, RGBColor opColor)"},
-	{"SetVideoMediaGraphicsMode", (PyCFunction)Qt_SetVideoMediaGraphicsMode, 1,
-	 "(MediaHandler mh, long graphicsMode, RGBColor opColor) -> (HandlerError _rv)"},
-	{"GetSoundMediaBalance", (PyCFunction)Qt_GetSoundMediaBalance, 1,
-	 "(MediaHandler mh) -> (HandlerError _rv, short balance)"},
-	{"SetSoundMediaBalance", (PyCFunction)Qt_SetSoundMediaBalance, 1,
-	 "(MediaHandler mh, short balance) -> (HandlerError _rv)"},
-	{"FindNextText", (PyCFunction)Qt_FindNextText, 1,
-	 "(MediaHandler mh, Ptr text, long size, short findFlags, TimeValue startTime) -> (ComponentResult _rv, TimeValue foundTime, TimeValue foundDuration, long offset)"},
 	{"NewMovieFromScrap", (PyCFunction)Qt_NewMovieFromScrap, 1,
 	 "(long newMovieFlags) -> (Movie _rv)"},
 	{"NewTimeBase", (PyCFunction)Qt_NewTimeBase, 1,
diff --git a/Mac/Modules/qt/qtscan.py b/Mac/Modules/qt/qtscan.py
index 7fba936..6b26bcb 100644
--- a/Mac/Modules/qt/qtscan.py
+++ b/Mac/Modules/qt/qtscan.py
@@ -56,6 +56,34 @@
 			"AddTESample",
 			"AddHiliteSample",
 			"HiliteTextSample",
+			# Missing in CW11 quicktime library
+			"SpriteMediaGetDisplayedSampleNumber",
+			"SpriteMediaGetIndImageDescription",
+			"SpriteMediaCountImages",
+			"SpriteMediaCountSprites",
+			"SpriteMediaHitTestSprites",
+			"SpriteMediaGetProperty",
+			"SpriteMediaSetProperty",
+			"TextMediaSetTextSampleData",
+			"TextMediaHiliteTextSample",
+			"TextMediaFindNextText",
+			"TextMediaAddHiliteSample",
+			"TextMediaAddTESample",
+			"TextMediaAddTextSample",
+			"VideoMediaGetStatistics",
+			"VideoMediaResetStatistics",
+			"EndFullScreen",
+			"NewMovieFromDataRef",
+			"MCPtInController",
+			"MCRemoveAMovie",
+			"MCRemoveAllMovies",
+			"MCInvalidate",
+			"InvalidateMovieRegion",
+			"GetMovieCompositeBufferFlags",
+			"SetMovieCompositeBufferFlags",
+			"SetTrackSoundLocalizationSettings",
+			"GetTrackSoundLocalizationSettings",
+			"GetMovieNaturalBoundsRect",
 			]
 
 	def makeblacklisttypes(self):
@@ -91,6 +119,9 @@
 			"MCActionFilterWithRefConUPP",
 			"GetMovieUPP",
 			"ModalFilterUPP",
+			"QTAtomContainer",
+			"SpriteWorld",
+			"Sprite",
 			]
 
 	def makerepairinstructions(self):
@@ -105,8 +136,9 @@
 			([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
 			 [('dummyshortptr', 'resId', 'InMode'), ('dummyStringPtr', 'resName', 'InMode')]),
 			 
-			# MCDoAction
-			([('void', 'params', 'OutMode')], [('mcactionparams', 'params', 'InMode')]),
+			# MCDoAction and more
+			([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
+			
 			]
 			
 if __name__ == "__main__":
diff --git a/Mac/Modules/qt/qtsupport.py b/Mac/Modules/qt/qtsupport.py
index 17ba808..5e91913 100644
--- a/Mac/Modules/qt/qtsupport.py
+++ b/Mac/Modules/qt/qtsupport.py
@@ -69,6 +69,7 @@
 CTabHandle = OpaqueByValueType("CTabHandle", "ResObj")
 PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj")
 SampleDescriptionHandle = OpaqueByValueType("SampleDescriptionHandle", "ResObj")
+ImageDescriptionHandle = OpaqueByValueType("ImageDescriptionHandle", "ResObj")
 TEHandle = OpaqueByValueType("TEHandle", "ResObj")
 # Silly Apple, passing an OStype by reference...
 OSType_ptr = OpaqueType("OSType", "PyMac_BuildOSType", "PyMac_GetOSType")
