added infrastructure for constraints