Designing a communication protocol