All of these methods feel really awkward. We're intercepting the call and it would make much more sense to have a struct to let the user read the values.