 				.fontDescriptor
 				.withSymbolicTraits(.italic)
 			let font = NSFont(descriptor: fontDesc, size: baseFont.pointSize)!
-			return NSAttributedString(string: "default", attributes: [NSAttributedStringKey.font: font])
-		case .error: return NSAttributedString(string: "error")
-		case .warn: return NSAttributedString(string: "warn")
-		case .info: return NSAttributedString(string: "info")
-		case .debug: return NSAttributedString(string: "debug")
+			menuItem.attributedTitle =  NSAttributedString(string: "default", attributes: [NSAttributedStringKey.font: font])
+		case .error:
+			menuItem.title = "error"
+		case .warn:
+			menuItem.title = "warn"
+		case .info:
+			menuItem.title = "info"
+		case .debug:
+			menuItem.title = "debug"
 		}
 	}
 	
 	var logLevel: LogLevel? { return LogLevel(rawValue: rawValue) }
 }
 
+// MARK: -
 class AppLogger: NSObject {
 	let logBuffer = NSTextStorage()
 	let config = Rc2LogConfig()
 	private(set) var globalLevelMenu: NSMenu
+	private var categoryMenuItem: NSMenuItem
 	private var logWindowController: NSWindowController?
 	private var menu2Category: [NSMenu: LogCategory] = [:]
 	
 	override init() {
 		let menu = NSMenu(title: "Global Log Level")
 		globalLevelMenu = menu
+		categoryMenuItem = NSMenuItem(title: "Log Categories", action: nil, keyEquivalent: "")
+		categoryMenuItem.submenu = NSMenu(title: "Log Categories")
 		super.init()
 		globalLevelMenu.delegate = self
+		categoryMenuItem.submenu?.delegate = self
 		for aLevel in [LogLevel.error, .warn, .info, .debug] {
 			let mitem = menuItem(for: OtherLogLevel.from(aLevel))
 			mitem.action = #selector(AppLogger.adjustGlobalLogLevel(_:))

				anItem.state = config.globalLevel == itemLevel ? .on : .off
				anItem.isEnabled = itemLevel != config.globalLevel
			}
			return
		} else {
			//figure out what category we're dealing  with, and its current value

	
	/// creates a menu item for category with an item for each possible OtherLogLevel
	private func menuItem(for category: LogCategory) -> NSMenuItem {
		let item = NSMenuItem(title: category.rawValue, action: nil, keyEquivalent: "")
		let menu = NSMenu(title: category.rawValue)
		item.submenu = menu
		for aLevel in OtherLogLevel.allCases {
