Feature/design refactoring