add protocol API