changed return is_empty