decoupling the comm lifetime from the widget lifetime