protocol inheritance