use dynamic protocol version