optional rule converts empty string to None.