class for defining constraints for types