preparing for letrec