added ConstraintArgument & Constant classes, the reason being that constraints can use both variables and plain old static value