Revert template to lifecycle based instead of signal/slot