better isEmpty checks