2nd version by Wu.