use recursion for recoveries