the usual
diff --git a/Mac/Lib/test/echo.py b/Mac/Lib/test/echo.py
index 616f712..20b1d77 100644
--- a/Mac/Lib/test/echo.py
+++ b/Mac/Lib/test/echo.py
@@ -11,6 +11,8 @@
 addpack.addpack('bgen')
 addpack.addpack('ae')
 addpack.addpack('evt')
+#addpack.addpack('menu')
+addpack.addpack('win')
 
 import sys
 sys.stdout = sys.stderr
@@ -20,18 +22,25 @@
 from AppleEvents import *
 import Evt
 from Events import *
+import Menu
+import Dlg
+import Win
+from Windows import *
+import Qd
+
 import aetools
+import EasyDialogs
 
 kHighLevelEvent = 23				# Not defined anywhere for Python yet?
 
 
 def main():
 	echo = EchoServer()
-	MacOS.EnableAppswitch(0)		# Disable Python's own "event handling"
+	yield = MacOS.EnableAppswitch(-1)		# Disable Python's own "event handling"
 	try:
-		echo.mainloop()
+		echo.mainloop(everyEvent, 0)
 	finally:
-		MacOS.EnableAppswitch(1)	# Let Python have a go at events
+		MacOS.EnableAppswitch(yield)	# Let Python have a go at events
 		echo.close()
 
 
@@ -44,6 +53,13 @@
 		for suite in self.suites:
 			AE.AEInstallEventHandler(suite, typeWildCard, self.aehandler)
 		self.active = 1
+		self.appleid = 1
+		Menu.ClearMenuBar()
+		self.applemenu = applemenu = Menu.NewMenu(self.appleid, "\024")
+		applemenu.AppendMenu("All about echo...;(-")
+		applemenu.AddResMenu('DRVR')
+		applemenu.InsertMenu(0)
+		Menu.DrawMenuBar()
 	
 	def __del__(self):
 		self.close()
@@ -64,22 +80,38 @@
 				self.lowlevelhandler(event)
 	
 	def lowlevelhandler(self, event):
-		what, message, when, (h, v), modifiers = event
+		what, message, when, where, modifiers = event
+		h, v = where
 		if what == kHighLevelEvent:
-			print "High Level Event:", `code(message)`, `code(h | (v<<16))`
+			msg = "High Level Event: %s %s" % \
+				(`code(message)`, `code(h | (v<<16))`)
 			try:
 				AE.AEProcessAppleEvent(event)
-			except AE.Error, msg:
-				print "AEProcessAppleEvent error:"
+			except AE.Error, err:
+				EasyDialogs.Message(msg + "\015AEProcessAppleEvent error: %s" % str(err))
 				traceback.print_exc()
+			else:
+				EasyDialogs.Message(msg + "\015OK!")
 		elif what == keyDown:
 			c = chr(message & charCodeMask)
 			if c == '.' and modifiers & cmdKey:
 				raise KeyboardInterrupt, "Command-period"
 			MacOS.HandleEvent(event)
+		elif what == mouseDown:
+			partcode, window = Win.FindWindow(where)
+			if partcode == inMenuBar:
+				result = Menu.MenuSelect(where)
+				id = (result>>16) & 0xffff	# Hi word
+				item = result & 0xffff		# Lo word
+				if id == self.appleid:
+					if item == 1:
+						EasyDialogs.Message("Echo -- echo AppleEvents")
+					elif item > 1:
+						name = self.applemenu.GetItem(item)
+						Qd.OpenDeskAcc(name)
 		elif what <> autoKey:
 			print "Event:", (eventname(what), message, when, (h, v), modifiers)
-			MacOS.HandleEvent(event)
+##			MacOS.HandleEvent(event)
 	
 	def aehandler(self, request, reply):
 		print "Apple Event",
diff --git a/Mac/Lib/toolbox/AppleEvents.py b/Mac/Lib/toolbox/AppleEvents.py
index b3780d0..0e1e069 100644
--- a/Mac/Lib/toolbox/AppleEvents.py
+++ b/Mac/Lib/toolbox/AppleEvents.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h'
+
 typeBoolean = 'bool'
 typeChar = 'TEXT'
 typeSMInt = 'shor'
diff --git a/Mac/Lib/toolbox/Controls.py b/Mac/Lib/toolbox/Controls.py
index c95ea11..0686580 100644
--- a/Mac/Lib/toolbox/Controls.py
+++ b/Mac/Lib/toolbox/Controls.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Controls.h'
+
 pushButProc = 0
 checkBoxProc = 1
 radioButProc = 2
diff --git a/Mac/Lib/toolbox/Dialogs.py b/Mac/Lib/toolbox/Dialogs.py
index 297568c..c31bfbe 100644
--- a/Mac/Lib/toolbox/Dialogs.py
+++ b/Mac/Lib/toolbox/Dialogs.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Dialogs.h'
+
 ctrlItem = 4
 btnCtrl = 0
 chkCtrl = 1
diff --git a/Mac/Lib/toolbox/Events.py b/Mac/Lib/toolbox/Events.py
index ac32c3f..943c9e5 100644
--- a/Mac/Lib/toolbox/Events.py
+++ b/Mac/Lib/toolbox/Events.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Events.h'
+
 nullEvent = 0
 mouseDown = 1
 mouseUp = 2
diff --git a/Mac/Lib/toolbox/Resources.py b/Mac/Lib/toolbox/Resources.py
index 743c656..e2ed97a 100644
--- a/Mac/Lib/toolbox/Resources.py
+++ b/Mac/Lib/toolbox/Resources.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Resources.h'
+
 resSysHeap = 64
 resPurgeable = 32
 resLocked = 16
diff --git a/Mac/Lib/toolbox/Sound.py b/Mac/Lib/toolbox/Sound.py
index 600adcd..a65c652 100644
--- a/Mac/Lib/toolbox/Sound.py
+++ b/Mac/Lib/toolbox/Sound.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Sound.h'
+
 swMode = -1
 ftMode = 1
 ffMode = 0
diff --git a/Mac/Lib/toolbox/Windows.py b/Mac/Lib/toolbox/Windows.py
index 5d5bd7a..037000f 100644
--- a/Mac/Lib/toolbox/Windows.py
+++ b/Mac/Lib/toolbox/Windows.py
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Windows.h'
+
 documentProc = 0
 dBoxProc = 1
 plainDBox = 2