refactored campaign controller