implement parse::parse_protocol