add tests. wip
add tests. wip