#3046 refactor to hide most of the major differences between v1beta2 and v1beta3 so its easier to switch versions and make the code a little more version agnostic