support empty string