 		if error != noErr {
 			return error
 		}
-		
+
+		// Ensure we have a HotKey registered for this ID
 		guard hotKeyID.signature == eventHotKeySignature,
 			let hotKey = self.hotKey(for: hotKeyID.id)
 		else {
 			return OSStatus(eventNotHandledErr)
 		}
 
+		// Call the handler
 		switch GetEventKind(event) {
 		case UInt32(kEventHotKeyPressed):
-			hotKey.keyDownHandler?()
+			if let handler = hotKey.keyDownHandler {
+				handler()
+				return noErr
+			}
 		case UInt32(kEventHotKeyReleased):
-			hotKey.keyUpHandler?()
+			if let handler = hotKey.keyUpHandler {
+				handler()
+				return noErr
+			}
 		default:
-			return OSStatus(eventNotHandledErr)
+			break
 		}
 
-		return noErr
+		return OSStatus(eventNotHandledErr)
 	}
 
 	private static func updateEventHandler() {

			return
		}

		box.carbonEventHotKey = eventHotKey

		updateEventHandler()
	}

	static func unregister(_ hotKey: HotKey) {
		guard let box = self.box(for: hotKey) else {
			return
		}

		UnregisterEventHotKey(box.carbonEventHotKey)

		box.hotKey = nil
		hotKeys.removeValue(forKey: box.carbonHotKeyID)
	}

			return
		}

		// Register for key down and key up
		let eventSpec = [
			EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyPressed)),
			EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyReleased))
		]

		// Install the handler
		InstallEventHandler(GetEventDispatcherTarget(), hotKeyEventHandler, 2, eventSpec, nil, &eventHandler)
	}

