Add campaign super class, more DRY