Supports different protocols