Improve and update recovery implementation