recover event generation logic