rename private function
refactor code
arrange code
fix #13