add LifecycleCallbacks