replace more controller logic with life cycle service