Add initial implementation with tests.