added xu's changes