added partition and multiple-value form of let