modified from branch1
merged master