make sure tail calls work with let
fix conditional generation bug