Design changes and Refactoring