Further design changes.
Refactoring again.