Helpers refactor, ongoing refactor for #3282

Not ready to be merged yet, just using this to track progress.