support custom events to trigger update