making protocol configurable