implement let via ast expansions