letrec
Refactor