fix #8 add tests