add changes by billchen1977