for protocol parse