diff --git a/Mac/Modules/ae/AEmodule.c b/Mac/Modules/ae/AEmodule.c
index e12c6c8..c479950 100644
--- a/Mac/Modules/ae/AEmodule.c
+++ b/Mac/Modules/ae/AEmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <AppleEvents.h>
diff --git a/Mac/Modules/ae/aegen.py b/Mac/Modules/ae/aegen.py
index 896eb78..d622cf8 100644
--- a/Mac/Modules/ae/aegen.py
+++ b/Mac/Modules/ae/aegen.py
@@ -1,4 +1,4 @@
-# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:AppleEvents.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:AppleEvents.h'
 
 f = AEFunction(OSErr, 'AECreateDesc',
     (DescType, 'typeCode', InMode),
diff --git a/Mac/Modules/ae/aescan.py b/Mac/Modules/ae/aescan.py
index bc6cc58..4317195 100644
--- a/Mac/Modules/ae/aescan.py
+++ b/Mac/Modules/ae/aescan.py
@@ -10,6 +10,7 @@
 import regex
 import regsub
 import MacOS
+from bgenlocations import TOOLBOXDIR
 
 from scantools import Scanner
 
@@ -17,7 +18,7 @@
 	print "=== Scanning AERegistry.h for defines ==="
 	input = "AERegistry.h"
 	output = "@dummy-registry.py"
-	defsoutput = "AERegistry.py"
+	defsoutput = TOOLBOXDIR + "AERegistry.py"
 	scanner = AppleEventsScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
@@ -27,14 +28,14 @@
 	# once we start writing servers in python.
 	input = "AEObjects.h"
 	output = "@dummy-objects.py"
-	defsoutput = "AEObjects.py"
+	defsoutput = TOOLBOXDIR + "AEObjects.py"
 	scanner = AppleEventsScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
 	print "=== Scanning AppleEvents.py ==="
 	input = "AppleEvents.h"
 	output = "aegen.py"
-	defsoutput = "AppleEvents.py"
+	defsoutput = TOOLBOXDIR + "AppleEvents.py"
 	scanner = AppleEventsScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/cm/Cmgen.py b/Mac/Modules/cm/Cmgen.py
index f3b8991..5edeb24 100644
--- a/Mac/Modules/cm/Cmgen.py
+++ b/Mac/Modules/cm/Cmgen.py
@@ -1,4 +1,4 @@
-# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Components.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Components.h'
 
 f = Function(Component, 'RegisterComponentResource',
     (ComponentResourceHandle, 'tr', InMode),
diff --git a/Mac/Modules/cm/Cmmodule.c b/Mac/Modules/cm/Cmmodule.c
index fd8b331..372fb56 100644
--- a/Mac/Modules/cm/Cmmodule.c
+++ b/Mac/Modules/cm/Cmmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Components.h>
diff --git a/Mac/Modules/cm/cmscan.py b/Mac/Modules/cm/cmscan.py
index d568a73..95abeed 100644
--- a/Mac/Modules/cm/cmscan.py
+++ b/Mac/Modules/cm/cmscan.py
@@ -3,6 +3,7 @@
 import addpack
 addpack.addpack(':tools:bgen:bgen')
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "Components"
 SHORT = "Cm"
@@ -10,7 +11,7 @@
 def main():
 	input = "Components.h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/dlg/dlggen.py b/Mac/Modules/dlg/dlggen.py
index b3f08ae..7eb9728 100644
--- a/Mac/Modules/dlg/dlggen.py
+++ b/Mac/Modules/dlg/dlggen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Dialogs.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Dialogs.h'
 
 f = Function(DialogRef, 'NewDialog',
     (NullStorage, 'wStorage', InMode),
diff --git a/Mac/Modules/dlg/dlgscan.py b/Mac/Modules/dlg/dlgscan.py
index b56edfd..31c88dd 100644
--- a/Mac/Modules/dlg/dlgscan.py
+++ b/Mac/Modules/dlg/dlgscan.py
@@ -4,6 +4,7 @@
 addpack.addpack(':Tools:bgen:bgen')
 
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "Dialogs"
 SHORT = "dlg"
@@ -12,7 +13,7 @@
 def main():
 	input = LONG + ".h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/evt/evtgen.py b/Mac/Modules/evt/evtgen.py
index 29f78d0..afffb10 100644
--- a/Mac/Modules/evt/evtgen.py
+++ b/Mac/Modules/evt/evtgen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Events.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Events.h'
 
 f = Function(UInt32, 'GetCaretTime',
 )
diff --git a/Mac/Modules/evt/evtscan.py b/Mac/Modules/evt/evtscan.py
index dc3b6ce..676c839 100644
--- a/Mac/Modules/evt/evtscan.py
+++ b/Mac/Modules/evt/evtscan.py
@@ -3,6 +3,7 @@
 import addpack
 addpack.addpack(':tools:bgen:bgen')
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "Events"
 SHORT = "evt"
@@ -11,7 +12,7 @@
 def main():
 	input = LONG + ".h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/fm/Fmgen.py b/Mac/Modules/fm/Fmgen.py
index 9f3f89c..194d034 100644
--- a/Mac/Modules/fm/Fmgen.py
+++ b/Mac/Modules/fm/Fmgen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Fonts.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Fonts.h'
 
 f = Function(void, 'InitFonts',
 )
diff --git a/Mac/Modules/fm/fmscan.py b/Mac/Modules/fm/fmscan.py
index adbb3dc..1a5d6a8 100644
--- a/Mac/Modules/fm/fmscan.py
+++ b/Mac/Modules/fm/fmscan.py
@@ -3,6 +3,7 @@
 import addpack
 addpack.addpack(':tools:bgen:bgen')
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "Fonts"
 SHORT = "Fm"
@@ -10,7 +11,7 @@
 def main():
 	input = "Fonts.h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/list/listgen.py b/Mac/Modules/list/listgen.py
index 85e0485..f6b8d86 100644
--- a/Mac/Modules/list/listgen.py
+++ b/Mac/Modules/list/listgen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Lists.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Lists.h'
 
 f = Function(ListRef, 'LNew',
     (Rect_ptr, 'rView', InMode),
diff --git a/Mac/Modules/list/listscan.py b/Mac/Modules/list/listscan.py
index 8061b56..ea11ba4 100644
--- a/Mac/Modules/list/listscan.py
+++ b/Mac/Modules/list/listscan.py
@@ -3,6 +3,7 @@
 import addpack
 addpack.addpack(':tools:bgen:bgen')
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "Lists"
 SHORT = "list"
@@ -11,7 +12,7 @@
 def main():
 	input = LONG + ".h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/menu/menugen.py b/Mac/Modules/menu/menugen.py
index b5a60ce..425003b 100644
--- a/Mac/Modules/menu/menugen.py
+++ b/Mac/Modules/menu/menugen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Menus.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Menus.h'
 
 f = Function(short, 'GetMBarHeight',
 )
diff --git a/Mac/Modules/menu/menuscan.py b/Mac/Modules/menu/menuscan.py
index 08a6a04..cf00dcc 100644
--- a/Mac/Modules/menu/menuscan.py
+++ b/Mac/Modules/menu/menuscan.py
@@ -3,11 +3,12 @@
 addpack.addpack(':Tools:bgen:bgen')
 
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 def main():
 	input = "Menus.h"
 	output = "menugen.py"
-	defsoutput = "Menus.py"
+	defsoutput = TOOLBOXDIR + "Menus.py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/qd/qdgen.py b/Mac/Modules/qd/qdgen.py
index 4df58f7..83f427f 100644
--- a/Mac/Modules/qd/qdgen.py
+++ b/Mac/Modules/qd/qdgen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CodeWarrior:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:QuickDraw.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:QuickDraw.h'
 
 f = Function(void, 'SetPort',
     (GrafPtr, 'port', InMode),
@@ -926,7 +926,7 @@
 )
 functions.append(f)
 
-# Generated from 'flap:CodeWarrior:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:QuickDrawText.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:QuickDrawText.h'
 
 f = Function(void, 'TextFont',
     (short, 'font', InMode),
diff --git a/Mac/Modules/qd/qdscan.py b/Mac/Modules/qd/qdscan.py
index fd654f3..4155df0 100644
--- a/Mac/Modules/qd/qdscan.py
+++ b/Mac/Modules/qd/qdscan.py
@@ -4,11 +4,12 @@
 addpack.addpack(':Tools:bgen:bgen')
 
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 def main():
 	input = "QuickDraw.h"
 	output = "qdgen.py"
-	defsoutput = "QuickDraw.py"
+	defsoutput = TOOLBOXDIR + "QuickDraw.py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
@@ -33,7 +34,7 @@
 		ifp.close()
 		ofp.close()
 		ifp = open("@QuickDrawText.py")
-		ofp = open("QuickDraw.py", "a")
+		ofp = open(TOOLBOXDIR + "QuickDraw.py", "a")
 		ofp.write(ifp.read())
 		ifp.close()
 		ofp.close()
diff --git a/Mac/Modules/qt/Qtmodule.c b/Mac/Modules/qt/Qtmodule.c
index ffba461..b53f133 100644
--- a/Mac/Modules/qt/Qtmodule.c
+++ b/Mac/Modules/qt/Qtmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Movies.h>
diff --git a/Mac/Modules/qt/qtgen.py b/Mac/Modules/qt/qtgen.py
index b10312e..03b29e7 100644
--- a/Mac/Modules/qt/qtgen.py
+++ b/Mac/Modules/qt/qtgen.py
@@ -1,4 +1,4 @@
-# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Movies.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Movies.h'
 
 f = Function(OSErr, 'EnterMovies',
 )
diff --git a/Mac/Modules/qt/qtscan.py b/Mac/Modules/qt/qtscan.py
index 020c487..7fba936 100644
--- a/Mac/Modules/qt/qtscan.py
+++ b/Mac/Modules/qt/qtscan.py
@@ -3,6 +3,7 @@
 import addpack
 addpack.addpack(':tools:bgen:bgen')
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "QuickTime"
 SHORT = "qt"
@@ -11,7 +12,7 @@
 def main():
 	input = "Movies.h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/res/Resmodule.c b/Mac/Modules/res/Resmodule.c
index 1e3e912..4ee935c 100644
--- a/Mac/Modules/res/Resmodule.c
+++ b/Mac/Modules/res/Resmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Resources.h>
diff --git a/Mac/Modules/res/resgen.py b/Mac/Modules/res/resgen.py
index fe267da..6b6c365 100644
--- a/Mac/Modules/res/resgen.py
+++ b/Mac/Modules/res/resgen.py
@@ -1,4 +1,4 @@
-# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Resources.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Resources.h'
 
 f = ResFunction(short, 'InitResources',
 )
diff --git a/Mac/Modules/res/resscan.py b/Mac/Modules/res/resscan.py
index 9420a03..eff0005 100644
--- a/Mac/Modules/res/resscan.py
+++ b/Mac/Modules/res/resscan.py
@@ -10,13 +10,14 @@
 import MacOS
 import addpack
 addpack.addpack(':Tools:bgen:bgen')
+from bgenlocations import TOOLBOXDIR
 
 from scantools import Scanner
 
 def main():
 	input = "Resources.h"
 	output = "resgen.py"
-	defsoutput = "Resources.py"
+	defsoutput = TOOLBOXDIR + "Resources.py"
 	scanner = ResourcesScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/snd/Sndmodule.c b/Mac/Modules/snd/Sndmodule.c
index 866ce75..ba87d0c 100644
--- a/Mac/Modules/snd/Sndmodule.c
+++ b/Mac/Modules/snd/Sndmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Sound.h>
diff --git a/Mac/Modules/snd/sndgen.py b/Mac/Modules/snd/sndgen.py
index 323f637..c984e0c 100644
--- a/Mac/Modules/snd/sndgen.py
+++ b/Mac/Modules/snd/sndgen.py
@@ -1,4 +1,4 @@
-# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Sound.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Sound.h'
 
 f = SndFunction(void, 'SetSoundVol',
     (short, 'level', InMode),
diff --git a/Mac/Modules/snd/sndscan.py b/Mac/Modules/snd/sndscan.py
index f28c48e..8db540a 100644
--- a/Mac/Modules/snd/sndscan.py
+++ b/Mac/Modules/snd/sndscan.py
@@ -4,13 +4,14 @@
 
 import addpack
 addpack.addpack(':Tools:bgen:bgen')
+from bgenlocations import TOOLBOXDIR
 
 from scantools import Scanner
 
 def main():
 	input = "Sound.h"
 	output = "sndgen.py"
-	defsoutput = "Sound.py"
+	defsoutput = TOOLBOXDIR + "Sound.py"
 	scanner = SoundScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/te/TEmodule.c b/Mac/Modules/te/TEmodule.c
index 5b54822..9d14b09 100644
--- a/Mac/Modules/te/TEmodule.c
+++ b/Mac/Modules/te/TEmodule.c
@@ -805,6 +805,32 @@
 	TEObject *self;
 	char *name;
 {
+
+				if( strcmp(name, "destRect") == 0 )
+					return Py_BuildValue("O&", PyMac_BuildRect,
+							(*self->ob_itself)->destRect);
+				if( strcmp(name, "viewRect") == 0 )
+					return Py_BuildValue("O&", PyMac_BuildRect,
+							(*self->ob_itself)->viewRect);
+				if( strcmp(name, "selRect") == 0 )
+					return Py_BuildValue("O&", PyMac_BuildRect,
+							(*self->ob_itself)->selRect);
+				if( strcmp(name, "lineHeight") == 0 )
+					return Py_BuildValue("h", (*self->ob_itself)->lineHeight);
+				if( strcmp(name, "fontAscent") == 0 )
+					return Py_BuildValue("h", (*self->ob_itself)->fontAscent);
+				if( strcmp(name, "selPoint") == 0 )
+					return Py_BuildValue("O&", PyMac_BuildPoint,
+							(*self->ob_itself)->selPoint);
+				if( strcmp(name, "selStart") == 0 )
+					return Py_BuildValue("h", (*self->ob_itself)->selStart);
+				if( strcmp(name, "selEnd") == 0 )
+					return Py_BuildValue("h", (*self->ob_itself)->selEnd);
+				if( strcmp(name, "active") == 0 )
+					return Py_BuildValue("h", (*self->ob_itself)->active);
+				if( strcmp(name, "teLength") == 0 )
+					return Py_BuildValue("h", (*self->ob_itself)->teLength);
+			
 	return Py_FindMethodInChain(&TEObj_chain, (PyObject *)self, name);
 }
 
diff --git a/Mac/Modules/te/tescan.py b/Mac/Modules/te/tescan.py
index e7bb74b..8d919e8 100644
--- a/Mac/Modules/te/tescan.py
+++ b/Mac/Modules/te/tescan.py
@@ -3,6 +3,7 @@
 import addpack
 addpack.addpack(':tools:bgen:bgen')
 from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
 
 LONG = "TextEdit"
 SHORT = "te"
@@ -11,7 +12,7 @@
 def main():
 	input = LONG + ".h"
 	output = SHORT + "gen.py"
-	defsoutput = LONG + ".py"
+	defsoutput = TOOLBOXDIR + LONG + ".py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
diff --git a/Mac/Modules/te/tesupport.py b/Mac/Modules/te/tesupport.py
index eda089c..daadea0 100644
--- a/Mac/Modules/te/tesupport.py
+++ b/Mac/Modules/te/tesupport.py
@@ -86,6 +86,34 @@
 				}""")
 	def outputFreeIt(self, itselfname):
 		Output("TEDispose(%s);", itselfname)
+		
+	def outputGetattrHook(self):
+		Output("""
+			if( strcmp(name, "destRect") == 0 )
+				return Py_BuildValue("O&", PyMac_BuildRect,
+						(*self->ob_itself)->destRect);
+			if( strcmp(name, "viewRect") == 0 )
+				return Py_BuildValue("O&", PyMac_BuildRect,
+						(*self->ob_itself)->viewRect);
+			if( strcmp(name, "selRect") == 0 )
+				return Py_BuildValue("O&", PyMac_BuildRect,
+						(*self->ob_itself)->selRect);
+			if( strcmp(name, "lineHeight") == 0 )
+				return Py_BuildValue("h", (*self->ob_itself)->lineHeight);
+			if( strcmp(name, "fontAscent") == 0 )
+				return Py_BuildValue("h", (*self->ob_itself)->fontAscent);
+			if( strcmp(name, "selPoint") == 0 )
+				return Py_BuildValue("O&", PyMac_BuildPoint,
+						(*self->ob_itself)->selPoint);
+			if( strcmp(name, "selStart") == 0 )
+				return Py_BuildValue("h", (*self->ob_itself)->selStart);
+			if( strcmp(name, "selEnd") == 0 )
+				return Py_BuildValue("h", (*self->ob_itself)->selEnd);
+			if( strcmp(name, "active") == 0 )
+				return Py_BuildValue("h", (*self->ob_itself)->active);
+			if( strcmp(name, "teLength") == 0 )
+				return Py_BuildValue("h", (*self->ob_itself)->teLength);
+		""")
 
 # From here on it's basically all boiler plate...
 
diff --git a/Mac/Modules/win/Winmodule.c b/Mac/Modules/win/Winmodule.c
index afac85f..cfa23c7 100644
--- a/Mac/Modules/win/Winmodule.c
+++ b/Mac/Modules/win/Winmodule.c
@@ -40,6 +40,9 @@
 extern PyObject *BMObj_New(BitMapPtr);
 extern int BMObj_Convert(PyObject *, BitMapPtr *);
 
+extern PyObject *PMObj_New(PixMapHandle);
+extern int PMObj_Convert(PyObject *, PixMapHandle *);
+
 extern PyObject *WinObj_WhichWindow(WindowPtr);
 
 #include <Windows.h>
diff --git a/Mac/Modules/win/wingen.py b/Mac/Modules/win/wingen.py
index 8841b1e..36d2851 100644
--- a/Mac/Modules/win/wingen.py
+++ b/Mac/Modules/win/wingen.py
@@ -1,4 +1,4 @@
-# Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Windows.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Windows.h'
 
 f = Function(RgnHandle, 'GetGrayRgn',
 )
diff --git a/Mac/Modules/win/winscan.py b/Mac/Modules/win/winscan.py
index 20771b0..2d332ad 100644
--- a/Mac/Modules/win/winscan.py
+++ b/Mac/Modules/win/winscan.py
@@ -1,13 +1,14 @@
 # Scan an Apple header file, generating a Python file of generator calls.
 import addpack
 addpack.addpack(':Tools:bgen:bgen')
+from bgenlocations import TOOLBOXDIR
 
 from scantools import Scanner
 
 def main():
 	input = "Windows.h"
 	output = "wingen.py"
-	defsoutput = "Windows.py"
+	defsoutput = TOOLBOXDIR + "Windows.py"
 	scanner = MyScanner(input, output, defsoutput)
 	scanner.scan()
 	scanner.close()
