added AllowEmptyStringAttribute so users can choose whichever AllowEmpty attribute they prefer