diff --git a/Mac/Modules/scrap/Scrapmodule.c b/Mac/Modules/scrap/Scrapmodule.c
index 4dfb4cd..e84a299 100644
--- a/Mac/Modules/scrap/Scrapmodule.c
+++ b/Mac/Modules/scrap/Scrapmodule.c
@@ -2,12 +2,10 @@
 /* ========================== Module Scrap ========================== */
 
 #include "Python.h"
-#include "macglue.h"
-#include <Memory.h>
-#include <Dialogs.h>
-#include <Menus.h>
-#include <Controls.h>
 
+
+
+#include "macglue.h"
 #include "pymactoolbox.h"
 
 #include <Scrap.h>
@@ -27,6 +25,38 @@
 
 static PyObject *Scrap_Error;
 
+static PyObject *Scrap_LoadScrap(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = LoadScrap();
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
+static PyObject *Scrap_UnloadScrap(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = UnloadScrap();
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
 static PyObject *Scrap_InfoScrap(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -40,34 +70,9 @@
 	                     SCRRec_New, _rv);
 	return _res;
 }
+#endif
 
-static PyObject *Scrap_UnloadScrap(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	long _rv;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	_rv = UnloadScrap();
-	if ( _rv ) return PyMac_Error((OSErr)_rv);
-	Py_INCREF(Py_None);
-	return Py_None;
-}
-
-static PyObject *Scrap_LoadScrap(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	long _rv;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	_rv = LoadScrap();
-	if ( _rv ) return PyMac_Error((OSErr)_rv);
-	Py_INCREF(Py_None);
-	return Py_None;
-}
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Scrap_GetScrap(_self, _args)
 	PyObject *_self;
@@ -75,73 +80,142 @@
 {
 	PyObject *_res = NULL;
 	long _rv;
-	Handle hDest;
-	ResType theType;
-	long offset;
+	Handle destination;
+	ScrapFlavorType flavorType;
+	SInt32 offset;
 	if (!PyArg_ParseTuple(_args, "O&O&",
-	                      ResObj_Convert, &hDest,
-	                      PyMac_GetOSType, &theType))
+	                      ResObj_Convert, &destination,
+	                      PyMac_GetOSType, &flavorType))
 		return NULL;
-	_rv = GetScrap(hDest,
-	               theType,
+	_rv = GetScrap(destination,
+	               flavorType,
 	               &offset);
 	_res = Py_BuildValue("ll",
 	                     _rv,
 	                     offset);
 	return _res;
 }
+#endif
+
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Scrap_ZeroScrap(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
-	long _rv;
+	OSStatus _err;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = ZeroScrap();
-	if ( _rv ) return PyMac_Error((OSErr)_rv);
+	_err = ZeroScrap();
+	if (_err != noErr) return PyMac_Error(_err);
 	Py_INCREF(Py_None);
-	return Py_None;
+	_res = Py_None;
+	return _res;
 }
+#endif
+
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Scrap_PutScrap(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
-	long _rv;
-	long length;
-	ResType theType;
-	char *source__in__;
-	int source__len__;
-	int source__in_len__;
+	OSStatus _err;
+	SInt32 sourceBufferByteCount;
+	ScrapFlavorType flavorType;
+	char *sourceBuffer__in__;
+	int sourceBuffer__len__;
+	int sourceBuffer__in_len__;
 	if (!PyArg_ParseTuple(_args, "O&s#",
-	                      PyMac_GetOSType, &theType,
-	                      &source__in__, &source__in_len__))
+	                      PyMac_GetOSType, &flavorType,
+	                      &sourceBuffer__in__, &sourceBuffer__in_len__))
 		return NULL;
-	length = source__in_len__;
-	_rv = PutScrap(length,
-	               theType,
-	               source__in__);
-	if ( _rv ) return PyMac_Error((OSErr)_rv);
+	sourceBufferByteCount = sourceBuffer__in_len__;
+	sourceBuffer__len__ = sourceBuffer__in_len__;
+	_err = PutScrap(sourceBufferByteCount,
+	                flavorType,
+	                sourceBuffer__in__);
+	if (_err != noErr) return PyMac_Error(_err);
 	Py_INCREF(Py_None);
-	return Py_None;
+	_res = Py_None;
+ sourceBuffer__error__: ;
+	return _res;
 }
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Scrap_ClearCurrentScrap(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = ClearCurrentScrap();
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Scrap_CallInScrapPromises(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = CallInScrapPromises();
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+#endif
 
 static PyMethodDef Scrap_methods[] = {
-	{"InfoScrap", (PyCFunction)Scrap_InfoScrap, 1,
-	 "() -> (ScrapStuff _rv)"},
-	{"UnloadScrap", (PyCFunction)Scrap_UnloadScrap, 1,
-	 "() -> (OSErr)"},
 	{"LoadScrap", (PyCFunction)Scrap_LoadScrap, 1,
-	 "() -> (OSErr)"},
+	 "() -> None"},
+	{"UnloadScrap", (PyCFunction)Scrap_UnloadScrap, 1,
+	 "() -> None"},
+
+#if !TARGET_API_MAC_CARBON
+	{"InfoScrap", (PyCFunction)Scrap_InfoScrap, 1,
+	 "() -> (ScrapStuffPtr _rv)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
 	{"GetScrap", (PyCFunction)Scrap_GetScrap, 1,
-	 "(Handle hDest, ResType theType) -> (long _rv, long offset)"},
+	 "(Handle destination, ScrapFlavorType flavorType) -> (long _rv, SInt32 offset)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
 	{"ZeroScrap", (PyCFunction)Scrap_ZeroScrap, 1,
-	 "() -> (OSErr)"},
+	 "() -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
 	{"PutScrap", (PyCFunction)Scrap_PutScrap, 1,
-	 "(ResType theType, Buffer source) -> (OSErr)"},
+	 "(SInt32 sourceBufferByteCount, ScrapFlavorType flavorType, Buffer sourceBuffer) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+	{"ClearCurrentScrap", (PyCFunction)Scrap_ClearCurrentScrap, 1,
+	 "() -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+	{"CallInScrapPromises", (PyCFunction)Scrap_CallInScrapPromises, 1,
+	 "() -> None"},
+#endif
 	{NULL, NULL, 0}
 };
 
@@ -161,7 +235,7 @@
 	Scrap_Error = PyMac_GetOSErrException();
 	if (Scrap_Error == NULL ||
 	    PyDict_SetItemString(d, "Error", Scrap_Error) != 0)
-		Py_FatalError("can't initialize Scrap.Error");
+		return;
 }
 
 /* ======================== End module Scrap ======================== */
diff --git a/Mac/Modules/scrap/scrapscan.py b/Mac/Modules/scrap/scrapscan.py
index 1a03b18..0d4661f 100644
--- a/Mac/Modules/scrap/scrapscan.py
+++ b/Mac/Modules/scrap/scrapscan.py
@@ -35,13 +35,28 @@
 		return [
 			]
 
+	def makegreylist(self):
+		return [
+			('#if !TARGET_API_MAC_CARBON', [
+				'InfoScrap',
+				'GetScrap',
+				'ZeroScrap',
+				'PutScrap',
+			]),
+			('#if TARGET_API_MAC_CARBON', [
+				'CallInScrapPromises',
+				'ClearCurrentScrap',
+			])]
+
 	def makeblacklisttypes(self):
 		return [
+			"ScrapRef",		# For now -- This is the Carbon scrap main object
 			]
 
 	def makerepairinstructions(self):
 		return [
 			([('void', '*', 'OutMode')], [('putscrapbuffer', '*', 'InMode')]),
+			([('void_ptr', '*', 'InMode')], [('putscrapbuffer', '*', 'InMode')]),
 			]
 			
 if __name__ == "__main__":
diff --git a/Mac/Modules/scrap/scrapsupport.py b/Mac/Modules/scrap/scrapsupport.py
index 701e197..1fe9ac2 100644
--- a/Mac/Modules/scrap/scrapsupport.py
+++ b/Mac/Modules/scrap/scrapsupport.py
@@ -27,17 +27,19 @@
 /*
 ** Generate ScrapInfo records
 */
-PyObject *SCRRec_New(itself)
+static PyObject *
+SCRRec_New(itself)
 	ScrapStuff *itself;
 {
 
 	return Py_BuildValue("lO&hhO&", itself->scrapSize,
 		ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState,
-		PyMac_BuildStr255, itself->scrapName;
+		PyMac_BuildStr255, itself->scrapName);
 }
 """
 
-ScrapStuffPtr = OpaqueType('ScrapStuff', 'SCRRec')
+ScrapStuffPtr = OpaqueByValueType('ScrapStuffPtr', 'SCRRec')
+ScrapFlavorType = OSTypeType('ScrapFlavorType')
 putscrapbuffer = FixedInputBufferType('void *')
 
 # Create the generator groups and link them
