support multiple protocol.