I'm mildly concerned that this is overly abstracted. Are there other places we're going to be wanting to use this? Vs just specifying the given functionality in `RunModeProperty`?