refactor campaign controller