fixed async and lifecycle