Changes made by Dan Xiong (danx@imaginet.com).