added letrec and fixed nested let scoping bug