only allows non-empty string values