allow protocols to be empty