I think this wants to be an enum? For type safety I'd prefer to accept a List<Protocol> vs. a List<ByteString>. If you're going to go most of the way, might as well go all of the way right?