Work in progress.
1. Updated tests.
2. Implementing features based on tests.