diff --git a/openstack/utils/choose_version.go b/openstack/utils/choose_version.go
new file mode 100644
index 0000000..e1ddf6b
--- /dev/null
+++ b/openstack/utils/choose_version.go
@@ -0,0 +1,81 @@
+package utils
+
+import (
+	"fmt"
+
+	"github.com/racker/perigee"
+)
+
+// Version is a supported API version, corresponding to a vN package within the appropriate service.
+type Version struct {
+	ID       string
+	Priority int
+}
+
+// ChooseVersion queries the base endpoint of a API to choose the most recent non-experimental alternative from a service's
+// published versions.
+// It returns the highest-Priority Version among the alternatives that are provided, as well as its corresponding endpoint.
+func ChooseVersion(baseEndpoint string, recognized []*Version) (*Version, string, error) {
+	type linkResp struct {
+		Href string `json:"href"`
+		Rel  string `json:"rel"`
+	}
+
+	type valueResp struct {
+		ID     string     `json:"id"`
+		Status string     `json:"status"`
+		Links  []linkResp `json:"links"`
+	}
+
+	type versionsResp struct {
+		Values []valueResp `json:"values"`
+	}
+
+	type response struct {
+		Versions versionsResp `json:"versions"`
+	}
+
+	var resp response
+	_, err := perigee.Request("GET", baseEndpoint, perigee.Options{
+		Results: &resp,
+		OkCodes: []int{200},
+	})
+
+	if err != nil {
+		return nil, "", err
+	}
+
+	byID := make(map[string]*Version)
+	for _, version := range recognized {
+		byID[version.ID] = version
+	}
+
+	var highest *Version
+	var endpoint string
+
+	for _, value := range resp.Versions.Values {
+		if matching, ok := byID[value.ID]; ok {
+			if highest == nil || matching.Priority > highest.Priority {
+				highest = matching
+
+				found := false
+				for _, link := range value.Links {
+					if link.Rel == "self" {
+						found = true
+						endpoint = link.Href
+					}
+				}
+
+				if !found {
+					return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", value.ID, baseEndpoint)
+				}
+			}
+		}
+	}
+
+	if highest == nil || endpoint == "" {
+		return nil, "", fmt.Errorf("No supported version available from endpoint %s", baseEndpoint)
+	}
+
+	return highest, endpoint, nil
+}
