protocol-generator