protocol design