continuing refactoring of campaign controller