diff --git a/Mac/Modules/OSATerminology.c b/Mac/Modules/OSATerminology.c
index e56a0db..6a13aea 100644
--- a/Mac/Modules/OSATerminology.c
+++ b/Mac/Modules/OSATerminology.c
@@ -1,10 +1,13 @@
 /*
-** This module is a one-trick pony: given an FSSpec it gets the aeut
-** resources. It was written by Donovan Preston and slightly modified
-** by Jack.
+** An interface to the application scripting related functions of the OSA API.
 **
-** It should be considered a placeholder, it will probably be replaced
-** by a full interface to OpenScripting.
+** GetAppTerminology - given an FSSpec/posix path to an application,
+**                         returns its aevt (scripting terminology) resource(s)
+**
+** GetSysTerminology - returns the AppleScript language component's
+**                         aeut (scripting terminology) resource
+**
+** Written by Donovan Preston and slightly modified by Jack and HAS.
 */
 #include "Python.h"
 #include "pymactoolbox.h"
@@ -26,12 +29,19 @@
 	if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags))
 		 return NULL;
 	
+	/*
+	** Note that we have to use the AppleScript component here. Who knows why
+	** OSAGetAppTerminology should require a scripting component in the
+	** first place, but it does. Note: doesn't work with the generic scripting
+	** component, which is unfortunate as the AS component is currently very
+	** slow (~1 sec?) to load, but we just have to live with this.
+	*/
 	defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr');
 	err = GetComponentInstanceError (defaultComponent);
 	if (err) return PyMac_Error(err);
 	err = OSAGetAppTerminology (
     	defaultComponent, 
-    	modeFlags,
+    	kOSAModeNull,
     	&fss, 
     	defaultTerminology, 
     	&didLaunch, 
@@ -45,29 +55,23 @@
 PyOSA_GetSysTerminology(PyObject* self, PyObject* args)
 {
 	AEDesc theDesc = {0,0};
-	FSSpec fss;
 	ComponentInstance defaultComponent = NULL;
 	SInt16 defaultTerminology = 0;
-	Boolean didLaunch = 0;
 	OSAError err;
-	long modeFlags = 0;
 	
-	if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags))
-		 return NULL;
-	
+	/* Accept any args for sake of backwards compatibility, then ignore them. */
+
 	defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr');
 	err = GetComponentInstanceError (defaultComponent);
 	if (err) return PyMac_Error(err);
-	err = OSAGetAppTerminology (
+	err = OSAGetSysTerminology (
     	defaultComponent, 
-    	modeFlags,
-    	&fss, 
+    	kOSAModeNull,
     	defaultTerminology, 
-    	&didLaunch, 
     	&theDesc
 	);
 	if (err) return PyMac_Error(err);
-	return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch);
+	return Py_BuildValue("O&", AEDesc_New, &theDesc);
 }
 #endif /* !__LP64__ */
 
@@ -80,11 +84,11 @@
   	{"GetAppTerminology", 
 		(PyCFunction) PyOSA_GetAppTerminology,
 		METH_VARARGS,
-		"Get an applications terminology, as an AEDesc object."},
+		"Get an application's terminology. GetAppTerminology(path) --> AEDesc"},
   	{"GetSysTerminology", 
 		(PyCFunction) PyOSA_GetSysTerminology,
 		METH_VARARGS,
-		"Get an applications system terminology, as an AEDesc object."},
+		"Get the AppleScript language's terminology. GetSysTerminology() --> AEDesc"},
 #endif /* !__LP64__ */
 	{NULL, (PyCFunction) NULL, 0, NULL}
 };
