fixed order of input and output in protocol