fix #7 add tests