allow giving customized protocol for util