Part 5. more tests, better interface.