do protocol version check first