add Lifecycle Callbacks