The controller is split into multiple sections, each of which has its own purpose.