add cost function