Better separation of concerns and DRY controllers