protocol_versions is now a tuple (high, low), specifying the protocol version range

simplifies quite some code