add tests and code