renamed empty to __empty