more tests and impls