add tests and linting