modified from repo2.1

repo2.1 branch is ready to merge to repo2