Split the ControlsHelper class into multiple more granular classes

Fixes #1520