added more checks; set hash to null on property removal