Changes made by Ray Lu (ray@vopsoft.com).