undertook recover function