add protocol init