empty value = invalid