improve EventProtocol