variable number of constraints