the value can be false or 0 which will not work if it is empty()