diff --git a/Mac/Modules/ctl/Ctlmodule.c b/Mac/Modules/ctl/Ctlmodule.c
index 629d3fb..526338b 100644
--- a/Mac/Modules/ctl/Ctlmodule.c
+++ b/Mac/Modules/ctl/Ctlmodule.c
@@ -92,23 +92,10 @@
 static void CtlObj_dealloc(self)
 	ControlObject *self;
 {
-	SetCRefCon(self->ob_itself, (long)0); /* Make it forget about us */
+	if (self->ob_itself) SetCRefCon(self->ob_itself, (long)0); /* Make it forget about us */
 	PyMem_DEL(self);
 }
 
-static PyObject *CtlObj_DisposeControl(_self, _args)
-	ControlObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	DisposeControl(_self->ob_itself);
-	Py_INCREF(Py_None);
-	_res = Py_None;
-	return _res;
-}
-
 static PyObject *CtlObj_ShowControl(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
@@ -452,9 +439,26 @@
 
 }
 
+static PyObject *CtlObj_DisposeControl(_self, _args)
+	ControlObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+
+		if (!PyArg_ParseTuple(_args, ""))
+			return NULL;
+		if ( _self->ob_itself ) {
+			SetCRefCon(_self->ob_itself, (long)0); /* Make it forget about us */
+			DisposeControl(_self->ob_itself);
+			_self->ob_itself = NULL;
+		}
+		Py_INCREF(Py_None);
+		_res = Py_None;
+		return _res;
+
+}
+
 static PyMethodDef CtlObj_methods[] = {
-	{"DisposeControl", (PyCFunction)CtlObj_DisposeControl, 1,
-	 "() -> None"},
 	{"ShowControl", (PyCFunction)CtlObj_ShowControl, 1,
 	 "() -> None"},
 	{"HideControl", (PyCFunction)CtlObj_HideControl, 1,
@@ -499,6 +503,8 @@
 	 "() -> (SInt32 _rv)"},
 	{"as_Resource", (PyCFunction)CtlObj_as_Resource, 1,
 	 "Return this Control as a Resource"},
+	{"DisposeControl", (PyCFunction)CtlObj_DisposeControl, 1,
+	 "() -> None"},
 	{NULL, NULL, 0}
 };
 
@@ -588,21 +594,6 @@
 	return _res;
 }
 
-static PyObject *Ctl_KillControls(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	WindowPtr theWindow;
-	if (!PyArg_ParseTuple(_args, "O&",
-	                      WinObj_Convert, &theWindow))
-		return NULL;
-	KillControls(theWindow);
-	Py_INCREF(Py_None);
-	_res = Py_None;
-	return _res;
-}
-
 static PyObject *Ctl_DrawControls(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -663,8 +654,6 @@
 	 "(WindowPtr theWindow, Rect boundsRect, Str255 title, Boolean visible, SInt16 value, SInt16 min, SInt16 max, SInt16 procID, SInt32 refCon) -> (ControlHandle _rv)"},
 	{"GetNewControl", (PyCFunction)Ctl_GetNewControl, 1,
 	 "(SInt16 controlID, WindowPtr owner) -> (ControlHandle _rv)"},
-	{"KillControls", (PyCFunction)Ctl_KillControls, 1,
-	 "(WindowPtr theWindow) -> None"},
 	{"DrawControls", (PyCFunction)Ctl_DrawControls, 1,
 	 "(WindowPtr theWindow) -> None"},
 	{"UpdateControls", (PyCFunction)Ctl_UpdateControls, 1,
diff --git a/Mac/Modules/ctl/ctledit.py b/Mac/Modules/ctl/ctledit.py
index d877012..9240851 100644
--- a/Mac/Modules/ctl/ctledit.py
+++ b/Mac/Modules/ctl/ctledit.py
@@ -6,3 +6,21 @@
 f.docstring = lambda : "Return this Control as a Resource"
 
 methods.append(f)
+
+DisposeControl_body = """
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	if ( _self->ob_itself ) {
+		SetCRefCon(_self->ob_itself, (long)0); /* Make it forget about us */
+		DisposeControl(_self->ob_itself);
+		_self->ob_itself = NULL;
+	}
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+"""
+
+f = ManualGenerator("DisposeControl", DisposeControl_body)
+f.docstring = lambda : "() -> None"
+
+methods.append(f)
diff --git a/Mac/Modules/ctl/ctlscan.py b/Mac/Modules/ctl/ctlscan.py
index 661cbfe..d3e185e 100644
--- a/Mac/Modules/ctl/ctlscan.py
+++ b/Mac/Modules/ctl/ctlscan.py
@@ -30,7 +30,7 @@
 
 	def makeblacklistnames(self):
 		return [
-			'DisposeControl' # Implied by deletion of control object
+			'DisposeControl', # Generated manually
 			'KillControls', # Implied by close of dialog
 			'SetCtlAction',
 			]
diff --git a/Mac/Modules/ctl/ctlsupport.py b/Mac/Modules/ctl/ctlsupport.py
index cef9f8a..3b32164 100644
--- a/Mac/Modules/ctl/ctlsupport.py
+++ b/Mac/Modules/ctl/ctlsupport.py
@@ -69,7 +69,7 @@
 		GlobalObjectDefinition.outputInitStructMembers(self)
 		Output("SetCRefCon(itself, (long)it);")
 	def outputCleanupStructMembers(self):
-		Output("SetCRefCon(self->ob_itself, (long)0); /* Make it forget about us */")
+		Output("if (self->ob_itself) SetCRefCon(self->ob_itself, (long)0); /* Make it forget about us */")
 		
 # Create the generator groups and link them
 module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
