Made contract type constraints more consistent
"Using string_or_none" rather than "non_empty_string | None"