add self delete protect