add tests, benchmarks