text can be nil