more work on letrec