Begin implementing a properly thought out interface with tests.