Issue #201: WIP Refactor version negotiation.

Do we want to support all options? We could have a variable to choose the versioning method, so we could avoid guess work.