non empty logic