Design changes. Code refactoring.