significantly DRYed the controllers