added dual objective function