ToLowerInvariant for case-insensitivity; added a few more restrictions;