add protocol types, not efficient