lifecycle: clean up callback mutation code