some improvements on protocol