merge part 1
merge part 2