add tests and coverage report