add DynamicWeakEventHandler