add objective function