Enums we cannot find are set to None, and enumsubst understands this (no substitution done). This is need for what I think are bugs in the Finder aete resources (some events use unknown enums).
diff --git a/Mac/Lib/lib-toolbox/aetools.py b/Mac/Lib/lib-toolbox/aetools.py
index 792cb72..42b6b76 100644
--- a/Mac/Lib/lib-toolbox/aetools.py
+++ b/Mac/Lib/lib-toolbox/aetools.py
@@ -103,7 +103,7 @@
 			
 def enumsubst(arguments, key, edict):
 	"""Substitute a single enum keyword argument, if it occurs"""
-	if not arguments.has_key(key):
+	if not arguments.has_key(key) or edict is None:
 		return
 	v = arguments[key]
 	ok = edict.values()
@@ -129,8 +129,9 @@
 
 class TalkTo:
 	"""An AE connection to an application"""
+	_signature = None	# Can be overridden by subclasses
 	
-	def __init__(self, signature, start=0, timeout=0):
+	def __init__(self, signature=None, start=0, timeout=0):
 		"""Create a communication channel with a particular application.
 		
 		Addressing the application is done by specifying either a
@@ -138,6 +139,8 @@
 		to an AEDesc.
 		"""
 		self.target_signature = None
+		if signature is None:
+			signature = self._signature
 		if type(signature) == AEDescType:
 			self.target = signature
 		elif type(signature) == InstanceType and hasattr(signature, '__aepack__'):
diff --git a/Mac/scripts/gensuitemodule.py b/Mac/scripts/gensuitemodule.py
index df1e455..8059cc7 100644
--- a/Mac/scripts/gensuitemodule.py
+++ b/Mac/scripts/gensuitemodule.py
@@ -667,16 +667,17 @@
 			return
 		pname = identify(name)
 		if self.namemappers[0].hascode('property', code):
-			# XXXX Why don't we handle these the same as classes??
+			# plural forms and such
+			othername, dummy, dummy = self.namemappers[0].findcodename('property', code)
 			if self.fp:
-				self.fp.write("# repeated property %s %s\n"%(pname, what[1]))
+				self.fp.write("\n%s = %s\n"%(pname, othername))
 		else:
 			if self.fp:
 				self.fp.write("class %s(aetools.NProperty):\n" % pname)
 				self.fp.write('\t"""%s - %s """\n' % (name, what[1]))
 				self.fp.write("\twhich = %s\n" % `code`)
 				self.fp.write("\twant = %s\n" % `what[0]`)
-			self.namemappers[0].addnamecode('property', pname, code)
+		self.namemappers[0].addnamecode('property', pname, code)
 	
 	def compileelement(self, elem):
 		[code, keyform] = elem
@@ -747,7 +748,7 @@
 		name, fullname, module = self.findcodename('enum', enum)
 		if not name:
 			if self.fp:
-				self.fp.write("# XXXX enum %s not found!!\n"%(enum))
+				self.fp.write("_Enum_%s = None # XXXX enum %s not found!!\n"%(identify(enum), enum))
 			return
 		if module:
 			if self.fp: