Interface, basic tests, and fake implementation.