customizable protocol