hard constraints