finish basic function
rebuild testable version and add tests
fix bug and add tests
add wechat test and wechat function
fix bugs