removed label argument and replaced with protocol argument