add cache on safe set&map fields for better listener