add error protocols