implemented efficient let and progn