add constraints
constraint solver