improve SMap for safer; fix SMapListener notify