add HasLifecycleCallbacks
update