campaign logic