merge from upstream
update dependency
change to use github style
improve code style
add style according to simple ruls priority
add test case for style test