protocol types