[Protocols] Refactored to comply with the new Generated API