Writing streaming protocols