add tests
make tests pass