added protocol conforming checking utility