DRY app controller