the API for this doesn't make a ton of sense to me, "None or (current_version, available_version)" is a pretty strange API contract