Introduce real controllers

Move controller logic into separate controller structs